本帖最后由 wizong 于 2016-6-25 00:18 编辑
起源 自己经历过的面试也不少了,互联网的、外企的,都有。总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的。细细想来,面试官拥有以下七种武器。恰似古龙先生笔下的武侠世界中的七种武器。下面我为各位一一道来。
长生剑=语言基础
长生剑是七种武器之首,同理,编程语言的考察也是技术面试中最基本的。这条不满足的就直接Pass了。以Java为例,语言的考察大致可以分为三个层次:
初级:语法考察,也就是该语言本身的使用层面。 这个层次的考察会考察一些语言的基本语法,对于这个层次的考察要做到对于每一个细节都熟练掌握。 考察的形式可以是问你某一段代码是否能成功编译,或者会输出什么结果,也可以是让你说一些不同关键字的不同含义、某一个关键字都可以有哪些用法,等等。Java常见问题: Inner Class, Static Nested Class的使用; final finally finalized关键字的区别; volatile\sychronized关键字的使用(Java开发往往是服务器端开发,所以并发相关的关键字要重点掌握); static关键字都有哪些使用场景(说出static block及格,说出import static会加分)。
中级:库或框架的使用。或者说是该语言的技术栈的使用层面。 库的使用: 也就是该语言的标准库的使用。以Java为例,会问你一些关于jdk中常见的framework,比如IO、 Collection、juc并发框架等,以及concurrentHashMap的实现原理等等。尤其要注意的是HashMap和ConcurrentHashMap的实现原理是面试官最喜欢攻击的技术点之一,一定要好好掌握。同时,因为是Java开发往往是服务器端的,juc包也是要重点掌握的。 除此之外还有一些重要的规范,比如JDBC、servlet,等等。 框架的使用: 以Java为例,Spring SpringMVC和MyBatis(Hibernate)这些框架的使用、原理都要掌握。对于Spring来说,要重点掌握IOC和AOP的实现原理,其中AOP要知道动态Proxy和CGLIB两种实现方式。对于ORM框架,要重点掌握MyBatis和Hibernate的实现原理和不同点。 高级:语言的底层实现。或者说是该语言的设计思想层面。 以Java为例,因为Java是以JVM为基础的,会问一些关于JVM的问题,比如JVM的运行时内存区域,JVM内存模型,GC机制,JVM的性能调优,类加载机制等等。另外需要掌握JIT等技术,以及为什么Oracle的Java虚拟机叫做HotSpot? 还有就是对一种语言的历史最好有一个大概了解,以Java为例,需要了解Java每个大版本都有哪些重大更新,等等。
|