JVM/并发/MySQL/Java/网络/Redis/Linux等一个都没“肝”完,想挤BAT你说难不难?
前两天看了一个帖子,讲的是位学Java的朋友,在双非渣本的时候就一个字,混!一路混到去年渣硕毕业。其实说真的,毕业了才是真的开始Java的学习,道阻且长。目前也是去各大公司投了简历面试,不过战绩挺惨的...腾讯(一面挂)、美团(二面挂)、网易严选(oc)、杭州字节lark(口头offer)、阿里新零售业务平台(oc)、滴滴交易平台(HR面)...看完这些老兄的面试面经之后,有感而发,写了这篇文章,综合总结了一些面试BAT的高频危险点(有其对应的面试和学习笔记),都是我们必须要掌握的,不然面试可就要被轰炸死了...毕竟,这些都没“肝完”,还想去大厂,你说难不难?
不废话了,咱来说说JVM面试相关的
1.【高频】Java内存区域 :程序计数器、虚拟机栈、本地方法栈、堆 、方法区 ,元空间等,每个区域要能介绍一下
2.Minor GC 触发条件:eden区剩余内存是否足够,两种情况分开分析
3.FULL GC 触发条件:Minor GC 平均晋升空间大小 > 老年代连续剩余空间,则触发FULL GC
4.【高频】 判断对象死亡的方法 :引用计数法、可达分析算法(深入一些:GC root对象有哪些?为什么选择他们做GC root对象?)
5.垃圾收集算法 :标记清除算法、标记整理算法、复制算法、分代收集算法 (深入一些: 各个算法的优点和适用场景)
6.垃圾收集器 :serial 、parallel 、CMS、G1,CMS 、G1 重点 , 介绍工作流程和优缺点
7.内存泄漏
- 例子: { 单例 , 容器 等等}
- 原因 : 长生命周期持有短生命周期引用
8.引用类型:强引用、 软引用、 弱引用 、 虚引用
9.【高频】 类加载过程 : 加载、连接、初始化 ,有哪些类加载器?能否自定义 Java.Object.String 的类加载器 ?
10.【高频】 双亲委派机制 介绍 & 作用
关于JVM相关常备要学习的笔记PDF:内存结构、垃圾回收、类加载与字节码技术、内存模型、JVM面试题答案、JVM的调优方面等等(下图所示PDF)。
JVM-内存结构-垃圾回收-类加载与字节码技术-内存模型-调优-面试
第二个是Java相关的
1.ArrayList 和 LinkedList 的区别
2.HashMap & ConcurrentHashMap 的比较 : 线程安全问题等等(深入一些 : HashMap 为什么线程不安全? 能否举例 = { 并发resize()触发闭环结构 ,覆盖put操作 })
3.【高频】 HashMap 的 相关问题
- HashMap系列需要通过关键源码理解,比较重要
- 为什么 HashMap的size 为 2的幂次方 ?
- HashMap resize()过程能否介绍 ?
- HashMap效率受什么影响 (负载因子、hash数组size)?
- HashMap中扰动函数的作用 ?
4.Hashtable 和 HashMap的区别
- 底层数据结构 (JDK1.8后不同)
- 父类不同
- 扩容方法不同
- 线程上锁范围不同(重点)
5.equals 和 == 区别
- 为啥重写equals要重写hashCode()
- hash值相等,而两个对象不一定equals
6.【高频】 String StringBuffer StringBuilder 区别 和各自使用场景(深入一些 : String 是如何实现它不可变的? 为什么要设置String为不可变对象 ?)
7.接口和抽象类区别
8.重写和重载的区别
9.深拷贝和浅拷贝区别
10.Java三大特性
11.Object的方法 :finalize、clone、getClass 、equals 、hashCode
12.【高频】 设计模式 : { 单例模式 、 工厂模式 、 装饰者模式 、 代理模式 、 <typo id="typo-1809" ignoretag="true" data-origin="策略">策略</typo>模式 等等}
深入一些 : 单例模式为什么采用双检测机制 ? 单例为什么用Volatile修饰? 装饰模式和代理模式区别?
Java相关的笔记,最主要的还是从基础-中级开发-高级程序员面试必备的知识点和面试题的整理,以及23种设计模式。
Java基础-中级-高级-设计模式
第三个是并发方面
1.线程的状态 : { new ,runnalbe , wait , time-wait , block , terminated }
2.进程 、 线程 、 协程的含义和区别(个人理解 是一组渐进提出的概念)
3.进程间通信方式 : 管道 、FIFO 、信号量 、共享内存 、消息队列 、Socket
4.如何避免死锁 ? 死锁的四个必要条件
5.Sleep和wait的区别
6.【高频】Sychronized 和 lock 的区别 ?
7.Sychronized的底层优化 : 无锁、偏向锁、轻量级锁 、重量级锁
8.volatile的作用 : 指令重拍 、 保证变量的可见性(设计JMM)
9.ThreadLocal 底层原理
10.【高频】 线程池
- 线程池构造器涉及哪些参数 : { corePoolSize , maximumPoolSzie , timeout , timeUnit , RejectHandler , 等待队列 , 线程工厂 }
- 绍线程池工作过程?
- 线程池拒绝策略哪些?
- 适用Executor创建线程池的弊端?
11.AQS 框架原理和 源码理解
并发编程这一块的话,前些日子白嫖到了4分大牛手写的笔记:并发编程、模式、应用、原理还有一份面试真题及答案
并发编程-模式-应用-原理-面试
第四个是MySQL(很重要)
1.【高频】MyISAM 和 InnoDB的区别 :
- 是否支持行锁
- 是否支持十五
- 是否支持 MVCC
- 底层索引结构不同
2.事务特性ACID(深入一些 : 为什么要有一致性 ? AID不是已经保证了一致性了吗 ?)
3.并发事务带来的问题 : 脏读 、修改丢失 、不可重复读 、幻影读
4.【高频】事务的隔离级别
5.【高频】 MVCC机制
6.【高频】索引
- 为什么索引使用B+树结构,而不是B树
- 为什么索引使用B+树结构,而不是红黑树 : 磁盘预读取 、红黑树高度
7.聚簇索引和非聚簇索引区别? 主键索引和二级索引了解吗?
8.为什么不对每个列创建索引呢?
9.【高频】SQL语句优化 ,SQL题目(字节要求撸代码)
10. explain中 rows type key extra字段的含义?
11.count(1) count(*) count(列值)的区别
MySQL真的是很很重要,这一块的东西就有点多了,什么调优的呀,面试的呀,学习的PDF,贼多,下图这些PDF都是必不可少的学习宝典
MySQL-面试-调优-笔记
Redis也是不可少的(美团对于Redis可是情有独钟)
1.为什么要用 redis /为什么要用缓存(高性能、高并发)
2.为什么要用 redis 而不用 map/guava 做缓存?
3.redis 常见数据结构以及使用场景分析(String、Hash、List、Set、Sorted Set)
4.redis 设置过期时间
5.redis 内存淘汰机制(MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?)
6.redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)
7.Redis 常见异常及解决方案(缓存穿透、缓存雪崩、缓存预热、缓存降级)
8.分布式环境下常见的应用场景(分布式锁、分布式自增 ID)
9.Redis 集群模式(主从模式、哨兵模式、Cluster 集群模式)
10.如何解决 Redis 的并发竞争 Key 问题
11.如何保证缓存与数据库双写时的数据一致性?
Redis答案已整理,如下
Redis的答案
计网方面
1. TCP/IP 模型 & OSI模型
2. 应用层、传输层、网络层常见协议 : DNS 、 HTTP 、FTP、 STMP 、SSL、 TCP、 UDP、 ARP、 IP
3. 【高频】 TCP 三次握手 、 TCP四次挥手
- 深入一些 : 为什么三次握手,能否两次?
- 四次挥手中什么是 time_wait 状态 ? close-wait 状态?
- time_wait状态什么场景下过多 , 会造成什么问题?
4. TCP可靠性 : ARQ 、 流量控制 、 拥塞控制 、 校验和
5. 【高频】输入URL显示主页的过程 // 个人仅遇过一次,但是看面经感觉问的挺多
6. HTTPS 和HTTP 区别(深入一些 : HTTPS 加密过程介绍 ?)
7. Cookie和Session的区别
8. Http1.0 和HTTP1.1 和 Http2.x 的区别
9. get和post的区别
10. 常见的状态码
网络这一块前几天熬夜整理了以下5个面试知识点,内有详细的解答
网络相关知识-面试
关于操作系统(相对较少)
1. 用户态和内核态的区别
2. fork()作用
3. Select poll epoll的区别
4. 虚拟内存作用? 内存分页的作用?
5. 缺页异常的介绍
6 . OOM问题和 StackOverFlow的区别
其他
1.需要了解linux的指令
关于linux指令,其实可以看看这份安装用途分类排序(26字母排序)的《Linux.命令全集》
Linux.命令全集-目录
Linux.命令全集-目录
Linux.命令全集-目录
Linux.命令全集-目录
2.对一些大数据场景题需要了解。 例如 1亿数据取top10 , 1亿数据取出现频率top10,1亿URL取出重复URL
3.64匹马,8个跑道,最少比赛几次选出前八?等智力题(字节常考)
... ....
完结
BAT——近在咫尺,远在天边,人人都想“挤一挤”。大厂都是梦,想把梦变成现实就得靠自己了,若是连Redis、JVM、并发、MySQL、Java、网络等一个你都“肝”不完,何谈BAT?
本文总结分析了挤进BAT必备的JVM、Redis、并发、MySQL、Java、网络、Linux等等方面的知识点进行了一些解析并着重指出了一些高频点,还附带总结了对应的面试+学习笔记,需要的朋友可以在评论区回复【555】即可!感谢支持!
转载请注明:Redis、JVM、并发、MySQL、Java、网络等一个你都“啃”不完,何谈BAT? | 胖虎的工具箱-编程导航