这里讲述的是一家公司,简称I,当天上午面完公司B之后,打车到火车站坐高铁赶来面试,午饭也没吃,这次面试的比较久,从下午15:30到19:30,主要是等待的时间。当天20:30还接了一个Z公司的电话面试。这次面试也是轮数最多,持续时间最长的一次。共有一面电面,二面技术面,三面boss1, 四面boss2, 五面vp,如果HR面都算的话共有6面了。
电面
能记住的题目不多了,尽量回忆下吧。主要是根据简历问一些问题。
1.SpringBean的加载过程。(这个经常被问)
其实这个是蛮长的一段,主要有一下一些步骤(博主个人理解,仅供参考):xml解析之后存入一个BeanDefinition之中,然后主要是对其进行操作;先在singletionObjects(是一个ConcurrentHashMap的对象)判断有没有Bean的实例,有就处理下返回,没有就继续;检测一下循坏依赖之类的;下面要进入主题了,如果是单例(spring Bean默认是单例)的话,就创建实例并存入singletonObjects中,如果不是则创建不保存(当然这里也有一个非常复杂的过程,这里就不论述了);实例创建完之后就开始属性注入(autowiredByType, autowiredByName);初始化Bean(激活Aware方法:BeanNameAware, BeanFactoryAware, ApplicationContextAware等;BeanPostProcessor接口;激活自定义init方法:init-method, InitializingBean接口;);这里就可以使用Bean了;使用完之后就是销毁了(destory-method, DisposableBean接口)。有关Spring的一些知识点可以参考《Spring知识点提炼》。
2.JVM的原理。
这个可以参考第二篇《这里有一份面筋请查收(二)》中的相关资料,当然这次没有说的这么多,大概是这篇文章中讲述的内容《Java虚拟机结构分析》。
3.Javac的编译过程
这个我好像记得面过,但是笔记上写了。姑且就当问过吧。大致就四个过程:词法分析,语法分析,语义分析,代码生成。详细可以参考《Javac编译过程》。
4.Linux命令相关
awk有什么作用?awk是一个强大的文本分析工具,awk实在是强大,三言两语无法说明白,有兴趣的可以自行度娘之。
怎么查看进程信息:ps -aux或者用Java的jps
5.JVM调优相关。可以参考上一篇的内容,不赘述。
二面
二面是face2face的,问的问题也么记住几个,囧。
1. 刚开始是一道设计题,有关目录树的设计。随意聊聊。
2. Keepalived和LVS的原理。
博主简历上写用过这两个东西,所以被问原理也很正常。
Keepalived是以VRRP协议为实现基础的,主要有三个模块,分别是core,check和vrrp。core是keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。工作在3,4,7层上。第三层:Keepalived会定期向服务器集群中的服务器发送一个ICMP的数据包,如果发现某台服务器的IP地址没有激活,Keepalived便报告这台服务器失效。并将它从服务器集群中提出。第四层:主要以TCP端口的状态来决定服务器工作正常与否。第7层:根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
3.分布式和集群之间的理解。
分布式是以缩短单个任务的执行时间来提升效率的,而集群是通过提高单位时间执行的任务数来提升效率的。
4.消息队列的用途。(略)
5.常用的Linux命令。
这个问题单在I公司就被问了三次。看来还是很看重对Linux系统的熟悉程度的,毕竟没有多少服务器是用win或者iOS跑的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
6.如果换做是你,你怎么设计HashMap或者ArrayList。
博主当时说了一下HashMap和ArrayList的相关知识点。然后说了一下ArrayList的不合理之处(第三篇文章中《这里有一份面筋请查收(三)》已涉及,有兴趣的可以链接过去看看),博取下眼球。
7.Java中堆快还是栈快?why?
(当然不只这么多题,but博主只记得住这么多了。。。主要是你简历上所写的都要了解,框架神马的原理都要懂,不懂就删掉吧。)
三面、四面和VP面
三面和四面是boss面,当时是通过视频面试的。
主要问了问项目经历,然后问问对I公司的认知,以及考察一些基础知识,两个Boss都问了常用的Linux命令有哪些这种问题。还有就是考察一下价值观和应变能力,如果是个正常人的思维逻辑一般都能过,语言不要偏激即可。
VP面是电话面试的。这个过程还是蛮曲折的,在2,3,4面的当天VP太忙没时间,后来约的下周继续面,后来又约电话面,中间绕了一周。面试也是聊聊项目经历,大约15mins左右。
后记
I公司的产品我基本天天都会用,知名度也很高,前景业内也很好。面试官人不错,不是那种喜欢抓着你不会地方猛揪的那种。最后还是没有选择,原因有两个:1. 博主手中有个公司V的offer,职位最对博主的胃口;2. I公司这个职位需要用到Java和Python,Java自然是没问题,python如果只作为脚本用用的话其实也不排斥,虽然没用过。如果需要用到另外一门主语言的话最希望的是C,博主用C的时间比Java还长,两门语言都是下过功夫的。python当主语言使用会耗费很多精力,还有用过python的人表示再来写Java会比较蛋疼,人生苦短,必须python,与我失之交臂啦。选择大于努力,希望这个选择不会后悔。
原文地址:http://blog.csdn.net/u013256816/article/details/51812891