面试时,除了候选人技术水平不行,候选人技术水平还不错的选项之外,有一大部分是介于两者之间,有的能答上来,有的则答不上来。
怎么才能正确预估一个人的技术水平呢?
原则是面试题不能太偏,最好都是一些必备的内容,一位的追求新技术,高层框架往往不能静下心来思考自己在做什么。
基础内容之外,增加一些扩展的内容,查看候选人知识的广度。
Java基础
面试的目的不是为了看候选人懂多少技术,最基础的东西,往往反映的就是一个人学习的态度,是否沉得下心来,在平时工作之余了解下自己为什么这样写?
基础好的人,才能更容易应对上层复杂难题。
- 集合:Arrays.asList。List.subList。HashMap实现原理,ConcurrentHashMap实现原理
- 多线程:线程池执行原理,volatile和synchronized。线程的状态切换,线程池中工具类
- 额外:java正则,加密模块,反射
- 常见排序算法,之间的区别
JVM
Java进阶部分内容,高级开发必备知识,如果连JVM都不了解,那么开发时确实学习主动性不够。
- 类的加载机制 :加载、链接(验证、准备、解析)初始化、使用、卸载。类加载器分类及其应用程序类加载器、自定义加载器。
- jvm内存结构:程序计数器、堆、虚拟机栈、本地方法栈、方法区(Java8已移除)、元空间(Java8新增)的作用及基本原理
- GC算法: 垃圾回收。对象存活判断
- GC分析 :命令调优 JVM内存参数设置及调优
存储
MySQL
- 理解至少两种数据库引擎(Inndb/Mysiam)的差异性
- 熟悉索引的内部数据结构,熟悉常见的索引方式(Btree,hash),和索引类型(unique,full text,normal)
- 会使用explain分析SQL语句,会优化SQL语句
- 熟悉一种NOSQL,知道内部实现原理(内部数据结构,在算法优化,内部机制)
- 掌握分布式数据库的知识,分表,分库,分区,分布式事务等,可以学习一个数据库中间件(TDDL/COBAR)熟悉高并发、大数据情况下的数据库开发。
Redis
- Redis支持的数据类型,使用过这些数据类型做过什么
- redis的数据淘汰策略
- Redis的持久化机制,AOF及RDB
- Redis哨兵原理
- 缓存穿透,缓存雪崩及如何处理
框架
- 认真看过SSM框架中的那部分知识点,能不能说下其中的内容?
- IOC和AOP,AOP实现原理?
- 事务实现原理? 涉及到那些关键的类
- 自定义Spring Boot starter
- MVC请求流程
分布式
- 分布式系统包含那些组件,常见的组件替换关系,用过那些组件
- 常见的分布式协议
- 如何自己设计一个RPC框架
额外
- 测试框架
- 高并发框架
- 平时是如何解决问题的?
- 平时是如何学习的?
最后
这上面问完,估计也有一个小时了,多听,多去分析对方说了什么,而不是对方不知道那些东西。目的是为了挑选一个合适的人,而不是其它。
喜欢对你有帮助的话记得加个关注不迷路哦,
还有关注我私信回复【面试】可以领取到一些个人收集的面试及电子书资料,或许对你有帮助!
作者:Real_man
链接:https://www.jianshu.com/p/c01ae208c927
来源:简书
閱讀更多 肥貓三千問 的文章