准备阶段
算法
- leetcode http://leetcode.com/
- careerup http://www.careercup.com/
- http://hawstein.com/posts/ctci-solutions-contents.html
- glassdoor http://www.glassdoor.com/index.htm
- topcoder http://www.topcoder.com/
- zoj http://acm.zju.edu.cn/onlinejudge/
- july的博客 http://blog.csdn.net/v_july_v/article/details/6543438
- mitbbs http://www.mitbbs.com/bbsdoc/JobHunting.html
- poj http://poj.org/
- 杭电acm http://acm.hdu.edu.cn/
- codeforceshttp://codeforces.com/
- 复杂数据结构的讲解及实现 GeeksForGeeks: http://www.geeksforgeeks.org/
- 一个比较牛逼的coding challenge网站: https://www.hackerrank.com/
Java基础
- 面向对象的特征:继承、封装和多态
- int 和 Integer 有什么区别;Integer的值缓存范围
- 说说反射的用途及实现
- Http 请求的 GET 和 POST 方式的区别
- MVC设计思想
- 什么是Java序列化和反序列化;如何实现Java序列化;或者请描述
- Serializable接口的作用
- 重载和重写的区别
进程和线程
- 线程和进程的概念
- 并行和并发的概念
- 创建线程的方式及实现
- 进程间通信的方式
- 说说 CountDownLatch、CyclicBarrier 原理和区别
- 说说 Semaphore 原理
- 说说 Exchanger 原理
- ThreadLocal 原理分析;ThreadLocal为什么会出现OOM,出现的深
层次原理
- 讲讲线程池的实现原理
- 线程池的几种实现方式
- 线程的生命周期;状态是如何转移的
锁机制
- 什么是线程安全?如何保证线程安全?
- 重入锁的概念;重入锁为什么可以防止死锁?
- 产生死锁的四个条件
- 如何检查死锁
- volatile 实现原理
- synchronized 实现原理(对象监视器)
- synchronized 与 lock 的区别
- AQS 同步队列
- CAS 无锁的概念;乐观锁和悲观锁
- 常见的原子操作类
- 什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的
- 乐观锁的业务场景及实现方式
- Java 8 并发包下常见的并发类
- 偏向锁、轻量级锁、重量级锁、自旋锁的概念
数据库
- DDL、DML、DCL 分别指什么
- explain 命令
- 脏读、幻读、不可重复读
- 事务的隔离级别
- 数据库的几大范式
- 说说分库与分表设计
- 分库与分表带来的分布式困境与对应之策
- 说说 SQL 优化之道
- 存储引擎的 InnoDB 与 MyISAM 区别、优缺点、使用场景
- 索引类别(B+树索引、全文索引、哈希索引);索引的区别
- 什么是自适应哈希索引(AHI)
- 为什么要用 B+tree 作为 MySql 索引的数据结构
- 聚集索引与非聚集索引的区别
- limit 20000 加载很慢怎么解决
- 常见的几种分布式 ID 的设计方案
JVM
- JVM 运行时内存区域划分
- 常见的 GC 回收算法及其含义
- 常见的 JVM 性能监控和故障处理工具类
- JVM 性能调优
- 类加载器、双亲委派模型
- 类加载的过程
- 强引用、软引用、弱引用、虚引用
- Java 内存模型 JMM
在对上面的内容做了准备后,我开始投简历面试,先从小公司开始面,小公司一般 1-2面技术,大公司 3-5 轮技术,一般都是一面基础,二面进阶,三面优化和场景,四面问规划,五面hr.
学习方式
- 看面试题
- 正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐 。
- 对问题深入理解
- 在看面试题的过程,你会遇到一些自己没接触过的或者以前没深入学习过的知识,例如最常问的HashMap内部实现原理,这就促使你得开始去看jdk的源码或者是学习一些新的东西。看源码是很重要的一步,起步很难,但是会让你收益良多。
- 熟悉项目的代码和需求
- 把项目中不错的需求拿出来,看会,代码熟悉好,将整个功能的流程和涉及的东西吃透。项目是面试中必问的环节,一般是以一个功能点为基础展开问,因此你必须对这个功能有很深的认识,不能有模糊的地方。如果有时间,能把涉及到的知识点也搞懂最好。
- 网上做题和刷题
- 头条会远程面试, 一般会做题。建议去本文开头的一些刷题网站多做些题目。
- 总结记录
- 把自己每天学到的内容记录下来,可以让自己更有动力的复习,技术是一个枯燥的过程,你必须让自己时刻保持有动力。
投简历、约面试环节
- 投简历渠道
- BOSS直聘、猎聘网。拉钩等(一般不靠谱),找靠谱猎头也行。
- 简历不要海投
- 为两个情况。
- 没有社招面试经验:建议采取海投的方式,只要职位要求跟自己比较匹配都可以投,累计面试经验。
- 社招面试经验已经足够:投那些职位匹配、公司满意的职位。公司评价可以去看准网,企业查等。
- 投简历没下文
- 简历确实亮点不多,学历不好,项目不行,容易被HR给刷掉,因此他们看得最直接的就是你上家的公司和你毕业的学校,如果你不是从牛逼的公司/学校出来,可能会碰到和我一样的情况,应对的办法就是多投。
- 一天约几家面试合适?
- 最理想的情况为2家面试,上午一般在10点左右,下午一般在2点左右。建议把理想的公司放下午,因为下午的时间比较充足,可以让公司更充分的了解你。我开始面的时候,每次都是上午面的不好,下午面的不错。
- 是否该裸辞?
- 我一开始是边上班边投,然后利用调休时间,或者请假去面试。后来,面试机会越来越多,请假太频繁了,自己都不好意思了,并且自己也已经有足够的信心,这个时候我选择了裸辞。
- 注意事项
- 千万别迟到。
- 做好特殊情况处理,带简历、充电宝、纸巾、伞。
裸辞还有一个原因是,在面试过程中你会发现,遇到公司要人紧急的,如果你的入职流程过长可能错过这个公司。
面试现场
- 笔试常见的问题
- 面试常见的问题上面给的面试题链接基本都有。
- 手写代码:手写代码一般考单例、排序、线程、消费者生产者 排序。
- 写SQL很常考察group by、内连接和外连接
- 面试1-5面总结
- 让你自我介绍
- 做两道算法题(刷题必中)
- 问Java基础知识
- java 高级进阶就是我准备的那些
- 问项目中指责和做了什么
- 业务情景问题,例如:你的一个功能上了生产环境后,服务器压力骤增,该怎么排查。
- 对职业的规划
- 你有什么想问面试官的
- 问期望待遇
- 常问的知识要点
- 集合相关问题(必问):
- 线程相关问题(必问):
- JVM相关问题(必问):
- 设计模式相关问题(必问):
- 数据库相关问题,针对Mysql(必问):
- 主流框架相关问题:
- Spring的设计模式。
- Spring中AOP。
- Spring注入bean的方式。
- 什么是IOC,什么是依赖注入。
- Spring是单例还是多例,怎么修改。
- Spring事务隔离级别和传播性。
- 介绍下Mybatis/Hibernate的缓存机制。
- Mybatis的mapper文件中#和$的区别。
- Mybatis的mapper文件中resultType和resultMap的区别。
- Hibernate和Mybatis的区别。
- Spring MVC和Struts2的区别。
- Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的,其内部是怎么实现的。
- 其他遇到问题:
- 介绍下B树、二叉树。
- IO和NIO的区别。
- 重载和重写的区别。
- 栈和队列。
- 接口和抽象类的区别。
- int和Integer的自动拆箱/装箱相关问题。 常量池相关问题。
- ==和equals的区别。
- String和StringBuilder、StringBuffer的区别。
- 静态变量、实例变量、局部变量线程安全吗,为什么。
- try、catch、finally都有return语句时执行哪个。
- 分布式锁的实现。
- 分布式session存储解决方案。
- 常用的linux命令。
Offer 流程
- 面试通过当然还有一些后续的环节
- 提交工资流水(大点的公司),学历,学位照片。
- 定薪
- 体检通知
- 背调 发offer。
- 入职材料 选择入职日期。
一些经验
- 千万别裸辞,别裸辞,别裸辞 我同事裸辞了,2个月了到现在还没找到工作。
- 先投一些普通的小公司,等面出感觉了再去面大公司。
- 自己不会的技术简历不要写
- 很多公司压待遇,期望待遇适当提高。
- 不要去实习期6个月还打8折的公司,除非你没有其他选择了,否则不要去。
- 不要去参加很多大大小小的招聘会,纯粹是浪费时间。
- 把面试当作一次技术的交流,不要太在意是否能被录取。 就当学习。
- 公司一般面完就决定是否录取了,让你回去等消息这种情况一般没戏,感觉良好也没用。
- 地方远的尽量通过电话面试,不然白跑。
- 面试冲刺阶段,要保持每天学习,无论是学习新东西还是复习旧东西。
- 无论好的坏的公司,先拿到offer再说,最后看看自己这个公司自己是否值得去。
- 通过面试体验和面试官的风格 可以大概判断入职团队的情况。
- 拉勾投的简历很多会被筛掉,但是拉勾还是面试机会的最主要来源。
- 理想的公司可以多投几次,不同部门要求不一样。
- 问到自己有深入研究过的知识,抓住机会好好表现,吹是必须的,不要轻易错过吹得机会。
- 大公司可以走猎头渠道,谈待遇靠谱一点。