## 面试准备
不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:
1\. 自我介绍。(介绍自己的项目经历以及一些特长而不是简单自我介绍喜好等)
2\. 自己面试中可能涉及哪些知识点、那些知识点是重点。
3\. 面试中哪些问题会被经常问到、面试中自己该如何回答。
4\. 自己的简历该如何写。
“80%的o?er掌握在20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部 分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 o?er。运气暂且不谈,就拿心态来说,千万 不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来 越强大。
另外,大家要明确的很重要的几点是:
1\. 写在简历上的东西一定要慎重,这可能是面试官大量提问的地方;
2\. 将自己的项目经历完美的展示出来非常重要。
## 常见面试问题及范围如下
### Java基础
1. 重载和重写的区别
2. String 和 StringBuffer、StringBuilder 的区别是什么?String 为什么是不可变的?
3.
自动装箱与拆箱
4. == 与 equals
5. final 关键字
6. Object类的常见
方法
7. Java 中的异常处理
8.
获取用
键盘输入常用的的两种
方法
9. 接口和抽象类的区别是什么
### 集合框架
1. Arraylist 与 LinkedList 异同
2. ArrayList 与 Vector 区别
3. HashMap的底层实现
4. HashMap 和 Hashtable 的区别
5. HashMap 的长度为什么是2的幂次方
6. HashMap 多线程操作导致死循环问题
7. HashSet 和 HashMap 区别
8. ConcurrentHashMap 和 Hashtable 的区别
9. ConcurrentHashMap线程安全的具体实现方式/底层具体实现
### 多线程与并发
1. AQS 原理
2. AQS 对资源的共享方式
3. AQS底层使用了模板
方法模式
4. 说一说自己对于 synchronized 关键字的了解
5. 说说自己是怎么使用 synchronized 关键字,在项目中用到了吗
6. 讲一下 synchronized 关键字的底层原理
7. 说说 JDK1.6 之后的synchronized 关键字底层做了哪些优化,可以详细介绍一下这些优化吗
8. 谈谈 synchronized和
reentrantlock 的区别
9. 说说 synchronized 关键字和 volatile 关键字的区别
10. 为什么要用线程池?
11. 实现Runnable接口和Callable接口的区别
12. 执行execute()
方法和submit()
方法的区别是什么呢?
13. 如何创建线程池
14. 介绍一下Atomic 原子类
15. JUC 包中的原子类是哪4类?
16. 讲讲 AtomicInteger 的使用
17. 能不能给我简单介绍一下 AtomicInteger 类的原理
### JVM
1. Java 中会存在内存泄漏吗,简述一下?
2. 描述一下 JVM 加载 Class
文件的原理机制?
3. 什么是tomcat类加载机制?
4. 类加载器双亲委派模型机制?
5.
垃圾回收常见问题
6. 什么是GC? 为什么要有 GC?
7. 简述一下Java
垃圾回收机制?
8. 如何判断
一个对象是否存活?
9.
垃圾回收的优点和原理,并考虑 2 种回收机制?
10. Java 中
垃圾收集的
方法有哪些?
11. 讲讲你理解的
性能评价及测试指标?
12. 常用的
性能优化方式有哪些?
### 网络编程与操作系统
1. TCP、UDP 协议的区别
2. 在浏览器中输入
URL地址 ->>
显示主页的过程
3. 各种协议与HTTP协议之
间的关系
4. HTTP长连接、短连接
5. TCP 三次握手和四次挥手(面试常客)
6. 简单介绍一下 Linux
文件系统?
7. 一些常见的 Linux 命令了解吗?
###
MysqL
1. 说说自己对于
MysqL 常见的两种存储引擎:MyISAM与InnoDB的理解?
2.
数据库索引了解吗?
3. 为什么索引能提高
查询速度?
4.
MysqL如何为表字段
添加索引?
5. 对于大表的常见优化手段说一下?
### Spring
1. Spring Bean 的作用域
2. Spring 事务中的隔离级别
3. Spring 事务中的事务传播行为
4. AOP是什么?
5. IOC是什么?
### 分布式
1. 为什么要用 re
dis缓存?
2. 为什么要用 re
dis 而不用 map/guava 做缓存?
3. re
dis 和 memcached 的区别?
4. re
dis 常见数据结构以及使用场景分析?(String,Hash,List,Set,Sorted Set)
5. re
dis 设置过期时间
6. re
dis 内存淘汰机制(
MysqL里有2000w数据,Re
dis中只存20w的数据,如何保证Re
dis中的数据都是热点数据?)
7. re
dis 持久化机制(怎么保证 re
dis 挂掉之后再重启数据可以进行恢复)?
8. re
dis 事务
9. 缓存雪崩和缓存穿透
问题解决方案
10. 如何
解决 Re
dis 的并发竞争 Key 问题
11. 如何保证缓存与
数据库双写时的数据一致性?
12. 什么是消息队列?为什么要用消息队列?
13. 通过异步处理提高系统
性能(削峰、减少响应所需时间)
14. 降低系统耦合性
15. 使用消息队列带来的一些问题
16. JMS两种消息模型
17. JMS 五种不同的消息正文格式
18. 常见的消息队列对比
19. 什么是
dubbo?为什么要用
dubbo?
20. 什么是 RPC?RPC原理是什么?
21.
dubbo 工作原理?
22. 解释一下什么是
负载均衡?
23. 看看
dubbo 提供的
负载均衡策略?
24. zookeeper宕机与
dubbo直连的情况?
# 最后我们该如何学习?
**1、看视频进行系统学习**
这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,
效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
另外,我自己也珍藏了好几套视频资料躺在网盘里,有需要的我也可以
分享给你:

**2、读源码,看实战笔记,学习大神思路**
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想
快速认知并学习架构,读源码是必不可少的。阅读源码,是
解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Spring源码深度解析:

Mybatis 3源码深度解析:

Re
dis学习笔记:

Spring Boot核心技术-笔记:

**3、面试前夕,刷题冲刺**
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:

只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
**资料领取方式:[点击蓝色传送门免费领取上述资料](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**
文章内容中涉及到的Java面试题、源码文档,技术笔记等学习资料,均可以免费
分享给大家学习,只需你动动手多多
支持即可!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。