最近离职了, 面了几家java的高级岗位, 深有感触, 特此写一篇博客记录下.
感想1 : 好久没面试了, 很多概念性的东西都忘了, 前几次面试好尴尬, 话都感觉说不清楚了. 后来面了几次以后心里有数了, 就开始从容不迫起来. 具体面试问题其实也没多难, 在末尾我会给出这几天的面试考察点.
感想2 : 之前公司呆的太舒适了, 虽然平时也看书的, 但是没那种危机意识, 看的很随意, 还好这次离职发现了自己的不足点.
感想3 : 原本很怕面试的, 后来转念一想, 你去别人面试, 相当于免费的考试, 是对自身技术的审查, 还是免费的, 而且很多面试官人很好, 这几次面试很多面试官也给了我很多建议, 对我的帮助也比较大的. 而且可以获取外部现在的主流技术框架, 扩展视野, 可以说好处多多.
下半部分介绍下我这次面试主要问的方面, 这次面了四天, 大概面了十几家公司吧, 其实考点都大同小异 :
1: java基础, 主要包括多线程, JVM, 容器. 也有可能混合考, 多线程主要由浅入深开始考察, 包括多线程运行状态, 线程的可见性, CAS以及实现方式, 锁, 锁优化, 线程创建方式, 线程池.
JVM包括堆内存分配, 垃圾回收器的几种类型, java内存模型 ,JVM调优. 这块感觉问的比较少, 可能是我答的不够好, 所以没问深入.
容器主要考察容器的接口, 问HashMap的比较多, HashMap如何解决hash冲突的, put操作的流程, 为什么会线程不安全, HashTable与currenthashmap 的不同,
2 : 数据库, 主要在于数据库中间件, 数据库设计规范, 数据库范式以及反范式的应用, 数据库优化 ,索引
数据库中间件主要要了解其中原理, 最好自己使用过.
设计规范主要是表结构, 字段命名, 冗余设计, 分库分表, 命名规范, 注释之类的
数据库优化比较复杂, 有索引优化, 索引的使用场景, 索引的失效场景, 索引创建的注意点, 索引的类型, 如果数据结构好的话会要你说B+树的相关操作. 慢日志查询分析 , 分库分表.
索引有可能单独拿出来问, 里面内容很多, 建议自己查询相关资料进行补充, 毕竟这块还是蛮重要的.
3 : nosql ,这块问redis的比较多, 所以可以重点看看, redis的结构以及内部实现方式, redis安全, 缓存淘汰策略, redis实现持久化的原理, 并发情况下redis的相关操作, 缓存可能出现的问题(缓存雪崩, 缓存并发, 缓存雪崩) ,如何确保缓存一致性 (缓存更新的套路)
4 : 工作经历的项目, 特点, 难点, 技术亮点. 如果你进行重构, 你会怎么做, 为什么, 有什么好处.
上面四部分基本上是必问的, 其余可能问的有 : 服务器安全, 接口优化, 项目管理, linux操作, 算法, Spring, 网络, JS , 消息中间件. 所以还是要注重平时积累. 尤其是基础知识积累, 经过多次查漏补缺, 弥补了自己很多不足, 所以觉得这次跳槽还是很有价值的.