作家
登录

3年工作经验的程序员应该具备的技能

作者: 来源: 2017-12-13 09:06:37 阅读 我要评论

别的,线程池也是比较常问的一块,常用的线程池有几种?这几种线程池之间有什么差别和接洽?线程池的实现道理是怎么样的?实际一些的,会给你一些具体的场景,让你答复这种场景该应用什么样的线程池比较合适。

最后,固然此次面试问得不多,然则多线程同步、锁这块也是重点。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虚拟机中比较重要的内容:

  1. Java虚拟机的内存构造
  2. GC算法及几种垃收受接收集器
  3. 类加载机制,也就是双亲委派模型
  4. Java内存模型
  5. happens-before规矩
  6. volatile关键字应用规矩
  7. 也许面试无用,但在走向大年夜牛的路上,弗成不会。

11、Web方面的一些问题 

Java重要面向Web端,是以Web的一些问题也是必问的。我碰着干预干咏馐皖多的两个问题是:

    1.谈谈分布式Session的几种实现方法

集合要控制的是ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet的实现道理,能流畅作答,当然能控制CopyOnWrite容器和Queue是再好不过的了。别的多说一句,ConcurrentHashMap的问题在面试中问得特别多,大年夜概是因为这个类可以衍生出异常多的问题,关于ConcurrentHashMap,我供给三点答复或者是研究偏向:

  1. ConcurrentHashMap的锁分段技巧
  2. ConcurrentHashMap的读是否要加锁,为什么
  3. ConcurrentHashMap的迭代器是强一致性的迭代器照样弱一致性的迭代器

      推荐阅读

      程序员面试失败的几种原因,你中枪了吗?

    开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 3)不知道OO的概念和设计原则。一向到今天,这跳槽岑岭弃一向迟迟不肯撤退,竟还有互联网公司某部分整体告退,对于一些人可能来说>>>详细阅读


    本文标题:3年工作经验的程序员应该具备的技能

    地址:http://www.17bianji.com/lsqh/39724.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)