从面试的角度讲,一个能找到比自己强的人才的方法才是最有前途的方法。否则,只能招到比自己水平低的人,那公司的未来就只能局限于领导的能力水平了……
如果是做业务为主的,那侧重点在于如何建立业务模型,如何应对业务变更的可能,如何处理版本分裂和制定迁移升级计划。
如果是做相对低层的技术优化的,那侧重点在于对性能、被Java封装的底层技术的细节、OS、Network等基础知识的掌握程度。掌握得越细致,越好。
操作系统层面:进程与线程,进程如何创建,线程如何创建。内存与换页的概念,进程通信,锁等等。
网络通信层面:7/5层模型,ip分片重组,ip路由,tcp握手,udp的重组,网络风暴的原因等等。
编程语言层面:面向对象,重载与重写,多态。对象创建模式,继承和组合, 语言的特点等等。
数据结构与算法:数组链表,Map应用场景。基本的排序算法,算法分析等等。
数据库层面:索引,SQL,事务隔离级别等等。
数据方面:二进制运算,各类型占用的字节数,各类型数字的最大值,最小值等等。
1、先说结论:基础不扎实的面试官问不出这种以小见大的问题。
2、可以列举几个:
(1)与非门在电子电路级别是如何实现的?通过逻辑电路如何制造一个最简单的计算器?譬如三体中描述的秦始皇如何用人肉方阵做一个计算机来预测天体运行规律?
考察点:《计算机组成原理》,是本科大一课程。
(2)System.out.println函数到底是如何在屏幕上显示出字符来的?涉及字符集,系统类,静态变量,ascii码,IO,buffer,OS,显卡驱动。
考察点:《计算机组成原理》,《操作系统》,JDK,字符集,乱码问题。
(3)为什么java采用单根继承?好处和坏处是什么?如何补救其缺点?流行的框架和最佳设计实践是怎么做的?如果用C语言模拟一个单根类继承的编程模式可以怎么实现?
考察点:OOP,设计模式
(4)集合类的类图和选型决策?可以挖出无数数据结构的问题。
考察点:《数据结构》
(5)类加载和运行的原理、顺序,以及各变量在内存的分布?有哪些扩展和hack的点?
考察点:JVM
(6)volatile关键字的用途和jvm编译优化?可以引出并发问题
考察点:并发,hotspot
(7)异常是如何抛出的?如何做一个不会崩溃的java程序?
考察点:异常,守护线程