大致面试过程
一般包括项目经验(其中可以有针对的问一些问题探听所述的虚实、掌握技术的深度广度),数据结构/算法/编程能力,专业知识(操作系统,网络,数据库等),在面试过程中,对候选人的表达能力,思维能力,学习能力,主动性和责任心,对技术是否有热情等方面做出判断。
探听虚实,可以问现有项目怎么做的,也可以现场进行设计,做到有理有据。
技术深度考察,可以采用剥洋葱式的提问方式。
常问问题
- 数据库引擎有了解么 如何分表
- Tcp与udp的区别
- jvm内存结构和各个内存块的作用,知道gc的大致过程
- concurentHashMap 的内部实现
- ssh了解以及抓取
- 项目中遇到的比较有挑战性的问题
- 如何发现慢查询?如何解决 (不要因为公司内部有了相应的自动化工具就不去了解如何去做!!!!!)
- 与pm讨论需求时,会提出自己的想法吗?举个例子
- 自己主要业务的QPS
- 面向对象的特征 以及多态是如何实现的 你对面向对象的看法
- java集合类相关
编程考察
- 非对齐的二维整数数组数据拷贝 coding实现
- 两个有序数组的合并
- 背包算法
具备能力
思维清晰
代码能力要强
把自己的系统业务描述清楚
熟练使用Linux命令
代码编写风格优良,易懂
严格遵循员工安全规范和安全开发规范
对自己所负责开发和维护的模块能够做高质量的单元测试。
熟悉并掌握STAR模型、金字塔原理;