jonwinters
关注
5483 号成员,2016-12-12 10:13:06 加入
625
个人主页 浏览
  • 另一道 sql 面试题

    2016-12-20 07:01

    这种强行要把业务逻辑 写在 SQL 里面的面试官,去死吧
    for
    for
    搞定 ,代码写完了

  • 面试的时候别问到你对 XX 的理解怎么回答好呢?

    2016-12-19 11:59

    问你 InputStream OutputStream 是 JavaIO 设计中 装饰模式 最里层 也就是以字节为单位的字节流 ,后来的 buffered 装饰 字符流 都是从这两个对象装饰而来的

  • 面试的时候别问到你对 XX 的理解怎么回答好呢?

    2016-12-19 11:06

    对 InputStream OutputStream 应该是问你 知不知道 JAVA IO 的继承体系大概是怎么 一回事,

    考的是你对 Java 设计模式的知识

    实际上 JavaIO 采用的是装饰者模式,一般来说 分成两种类型

    一种是 以字符流 装饰体系
    一种是以字节流的装饰继承体系

    另外 IO 分为 同步阻塞 异步非阻塞 等体系 一般把 Unix 环境高级编程的 IO 几大模型图 背下来 就可以了
    要是你知道异步等高级 IO 的用法 以及 Reactor 设计模式 等

  • 面试的时候别问到你对 XX 的理解怎么回答好呢?

    2016-12-19 11:00

    http://img.my.csdn.net/uploads/201205/15/1337078642_5965.jpg

    搞 Java 的人 这张图 肯定是要背熟的 否则你日常开发 要吃瘪啊

  • 面试的时候别问到你对 XX 的理解怎么回答好呢?

    2016-12-19 10:57

    有的时候,有些东西我也不一定记得住, Java 线程 我一般会去翻看 Java 并发编程实战,关键是你要说出你的解决问题的思路
    而不是什么都不知道回答

  • 面试的时候别问到你对 XX 的理解怎么回答好呢?

    2016-12-19 10:55

    这应该比较好回答的,开放性的题目,

    Java 集合 应该指的是 Java 集合框架,封装了常见的数据结构与算法,通常算法封装在 Collection 类中 里面有常用的二分查找 等等算法之类

    Spring 是 Ioc 控制反转思想的下 的一个依赖注入的实现,Spring 帮助开发者管理 Java 对象,
    通过接口定义注入,解除了依赖者 与 被依赖者之间的耦合关系

    Java 的线程池,与其它的语言的线程池 并无什么太大的区别,线程池的作用就是减少 线程创建销毁带来的开销,一般采取的是生产者 消费者模型
    动态扩展线程数量,一般可以通过 Queue 或者 BlockingQueue 来实现 一个自定义的线程池,

  • 怎么看待那些技术或者框架中你所不知道的奇淫巧技?

    2016-12-17 08:02

    代码主要还是实用为主,太花哨 记不住,trick 太多容易忘记 还得上网查,现在都有代码提示,不在乎多打几个子

  • Java C# LZMA 字符串压缩解压

    2016-12-17 07:57

    弄个 Javascript 版本就好了

  • Java 线程池和普通线程区别

    2016-12-12 11:08

    说法出错了,GC root 是有向图,实际搜索算法 与 线程暂停 以及回收,各个 JVM 有不同的实现,这个需要参考虚拟机厂商的文档

  • Java 线程池和普通线程区别

    2016-12-12 10:49

    另外楼主还要去补一补常见的 IO 模型,补完 IO 模型,你大概就能理解为什么要使用线程池了,

  • Java 线程池和普通线程区别

    2016-12-12 10:43

    线程池主要是为了解决 大规模应用中线程复用的问题,因为创建线程,需要重新创建线程上下文 以及堆栈 PC 之类的,线程本身就是非常昂贵的资源开销,
    每一个新的线程都对应自己的线程栈,而且 Java 在 GC 的时候 需要暂停所有线程(不同 JVM 有自己的实现,这个不是绝对的),标记对象 进行回收,如果线程过多,GC 的时间就会相应增加 ,
    目前广泛采用的 GC root 算法,也就是针对所有的对象,形成一个无向图,然后进行一个图的搜索,如果所有线程的 当前 堆栈 本地方法栈 等都没有引用到这个对象的时候,这个对象就会被标记回收,

    小规模运用的话,用不用线程池 区别不大,因为创建线程开销相对较小,如果是亿级别的访问量,试问 tomcat 针对每一个 request 请求都进行一个线程创建,
    开销是十分巨大的,所以一般会采用动态线程池,根据并发访问量 来自动扩充工作线程。

    如果你的并发以及访问压力不大,例如一个手指头都 能搞定的话,线程池只是大材小用,如果并发量相当大的话,一般都会使用线程池

  • 各位大哥,现在 docker 很火嘛?对于我们 java 开发有什么好处

    2016-12-12 10:26

    docker 解决的是云服务器的资源共享问题,相对 vps 进行更加细粒度的共享,
    docker 可以解决部署依赖问题,linux 库版本的依赖问题不是一天两天的问题了,软件 A 依赖 C 库版本 1.0 软件 B 依赖 C 库版本 2.0,同一个库 还不能安装两个版本,
    这种包依赖混乱 导致 apt yum 无法安装软件,很多新手应该都遇到过,有 docker 就 可以直接针对应用进行 依赖版本管理,减少程序员的心智负担,妈妈说 我再也不用担心依赖的问题了