JVM/并发/MySQL/Java/网络/Redis/Linux等一个都没“肝”完,想挤BAT你说难不难? 前两天看了一个帖子,讲的是位学Java的朋友,在双非渣本的时候就一个字,混!一路混到去年渣硕毕业。其实说真的,毕业了才是真的开始Java的学习,道阻且长。目前也是去各大公司投了简历面试,不过战绩挺惨的...腾讯(一面挂)、美团(二面挂)、网易严选(oc)、杭州字节lark(口头offer)、阿里新零售业务平台(oc)、滴滴交易平台(HR面)...看完这些老兄的面试面经之后,有感而发,写了这篇文章,综合总结了一些面试BAT的高频危险点(有其对应的面试和学习笔记),都是我们必须要掌握的,不然面试可就要被轰炸死了...毕竟,这些都没“肝完”,还想去大厂,你说难不难?

事先声明:本文总结分析了挤进BAT必备的JVM、Redis、并发、MySQL、Java、网络、Linux等等方面的知识点进行了一些解析并着重指出了一些高频点,还附带总结了对应的面试+学习笔记,都可免费的分享,点击这里

不废话了,咱来说说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)。

 

第二个是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种设计模式。

第三个是并发方面

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都是必不可少的学习宝典

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答案已整理,如下

 

计网方面

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.命令全集》

 

 

 

2.对一些大数据场景题需要了解。 例如 1亿数据取top10 , 1亿数据取出现频率top10,1亿URL取出重复URL 3.64匹马,8个跑道,最少比赛几次选出前八?等智力题(字节常考) ... ....

完结

BAT——近在咫尺,远在天边,人人都想“挤一挤”。大厂都是梦,想把梦变成现实就得靠自己了,若是连Redis、JVM、并发、MySQL、Java、网络等一个你都“肝”不完,何谈BAT?

文中总结分析了一些JVM、并发、MySQL、Java、网络、Redis、Linux的等在面试BAT前你必备的知识点,并且还有其对应要学习的笔记PDF(小编都已整理成册,但其实展示这只是一些,还有很多就不一一介绍了,感兴趣的朋友皆可免费分享),不论是准备面试还是学习,必不可少。麻烦朋友们点赞转发一下,点击这里获取免费下载这些全部PDF(面试+学习)的方式。