别的,线程池也是比较常问的一块,常用的线程池有几种?这几种线程池之间有什么差别和接洽?线程池的实现道理是怎么样的?实际一些的,会给你一些具体的场景,让你答复这种场景该应用什么样的线程池比较合适。
最后,固然此次面试问得不多,然则多线程同步、锁这块也是重点。synchronized和ReentrantLock的差别、synchronized锁通俗办法和锁静态办法、逝世锁的道理及排查办法等等...
IO分为File IO和Socket IO,File IO根本上是不会问的,问也问不出什么来,日常平凡会用就好了,别的记得File IO都是浊宣IO。
Socket IO是比较重要的一块,要搞懂的是浊宣/非浊宣的差别、同步/异步的差别,借此懂得壅塞IO、非浊宣IO、多路复竽暌姑IO、异步IO这四种IO模型,Socket IO若何和这四种模型相接洽关系。这是根本一些的,深刻一些的话,就会问NIO的道理、NIO属于哪种IO模型、NIO的三大年夜构成等等,这有些难,当时我也是研究了良久才搞懂NIO。
提一句,NIO并不是严格意义上的非浊宣IO而应当属于多路复竽暌姑IO,面试答复的时刻要留意这个细节,讲到NIO会壅塞在Selector的select办法上会增长面试官对你的好感。
6、JDK源码
要想拿高工资,JDK源码弗成不读。膳绫擎的内容可能还和具体场景接洽起来,JDK源码就是实打实地看你日常平凡是不是爱研究了。我面试过程中被问了不少JDK源码的问题,个中最刁钻的一个问题——String的hashCode()办法是怎么实现的,幸好我日常平凡String源代码看得多,答了个大年夜概。JDK源码其实没什么好总结的,纯粹看小我,总结一下比较重要的源码:
List、Map、Set实现类的源代码
8、数据库
AtomicInteger的实现道理,重要能说清跋扈CAS机制并且AtomicInteger是若何应用CAS机制实现的
线程池的实现道理
Object类中的办法以及每个办法的感化
这些其实请求蛮高的,我客岁一全年根本把JDK中重要类的源代码研究了个遍,真的花费时光、花费精力,当然回头看,是值得的----不仅仅是为了敷衍面试。
7、 框架
老生常谈,面试必问的器械。一般来说会问你一下你们项目中应用的框架,然后给你一些场景问你用框架怎么做,比如我想要在spring初始化bean的时刻做一些工作该怎么做、想要在bean烧毁的时刻做一些工作该怎么做、MyBatis中$和#的差别等等,这些都比较实际了,日常平凡积聚得好、有多进修框架的应用细节天然都不盘考题。
如不雅膳绫擎你的问题答得好,面试官往往会深刻地问一些框架的实现道理。问得最多的就是Spring AOP的实现道理,当然这个很简单啦,两句话就搞定的的事儿,即使你不会预备一下就好了。我碰到的最掉常的是让我画一下Spring的Bean工厂实现的UML图,当然面对如许一个有深度的问题,我是绝对答不出来的......
数据库十有八九也都邑问到。一些根本的像union和union all的差别、left join、几种索引及其差别就不谈了,比较重要的就是数据库机能的优化,如不雅对于数据库的机能优化一窍不通,那么竽暌剐时光,照样建议你在面试前花一两天专门把SQL基本和SQL优化的内容预备一下。
9、数据构造和算法分析
数据构造和算法分析,对于一名法度榜样员来说,会比不会好并且在工作中绝对能派上用处。数组、链表是基本,栈和队列深刻一些但也不难,树挺重要的,比较重要的树AVL树、红黑树,可以不懂得它们的具体实现,然则要知道什么是二叉查找树、什么是均衡树,AVL树和红黑树的差别。记得某次面试,某个面试官和我聊到了数据库的索引,他问我:
你知道索引应用的是哪种数据构造实现吗?
我答到用的Hash表吧,答错。他又问,你知道为什么要应用树吗?我答到因为Hash表可能会出现比较多的冲突,在切切甚至是上亿级其余数据面前,会大年夜大年夜增长查找的时光复杂度。而树比较稳定,根本包管最多二三十次就能找到想要的数据,对方说不完全对,最后我们照样交换了一下这个问题,我也明白了为什么要应用树,这里不说,大年夜家认为索引为什么要应用树来实现呢?
至于算法分析,不会、不想研究就算了,记得某次面试对方问我,Collections.sort办法应用的是哪种排序办法,额,吐血三升。当然为了显示我的博学,对算法分析也有必定的研究,我照样硬着头皮说了一句可能是冒泡排序吧。当然谜底肯定不是,有兴趣的同伙可以去看一下Collections.sort办法的源代码,用的是一种叫做TimSort的排序法,也就是加强型的归并排序法。
10、 Java虚拟机
出乎我料想,Java虚拟机应当是很重要的一块内容,结不雅在这几家公司中被问到的概率几乎为0。要知道,我客岁可是花了大年夜量的时光去研究Java虚拟机的,光周志明师长教师的《深刻懂得Java虚拟机:JVM高等特点与最佳实践》,就读了不下五遍。
言归正传,固然Java虚拟机没问到,但我认为照样有须要研究的,我就R单地列一个提纲吧,谈谈Java虚拟机中比较重要的内容:
- Java虚拟机的内存构造
- GC算法及几种垃收受接收集器
- 类加载机制,也就是双亲委派模型
- Java内存模型
- happens-before规矩
- volatile关键字应用规矩
- 也许面试无用,但在走向大年夜牛的路上,弗成不会。
11、Web方面的一些问题
Java重要面向Web端,是以Web的一些问题也是必问的。我碰着干预干咏馐皖多的两个问题是:
1.谈谈分布式Session的几种实现方法
集合要控制的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现道理,能流畅作答,当然能控制CopyOnWrite容器和Queue是再好不过的了。别的多说一句,ConcurrentHashMap的问题在面试中问得特别多,大年夜概是因为这个类可以衍生出异常多的问题,关于ConcurrentHashMap,我供给三点答复或者是研究偏向:
- ConcurrentHashMap的锁分段技巧
- ConcurrentHashMap的读是否要加锁,为什么
- ConcurrentHashMap的迭代器是强一致性的迭代器照样弱一致性的迭代器
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 3)不知道OO的概念和设计原则。一向到今天,这跳槽岑岭弃一向迟迟不肯撤退,竟还有互联网公司某部分整体告退,对于一些人可能来说>>>详细阅读
本文标题:3年工作经验的程序员应该具备的技能
地址:http://www.17bianji.com/lsqh/39724.html
1/2 1