Redis、JVM、并发、MySQL、Java、网络等一个你都“啃”不完,何谈BAT?

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等等方面的知识点进行了一些解析并着重指出了一些高频点,还附带总结了对应的面试+学习笔记,需要的朋友chuo【传送门】即可!感谢支持!

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...