一、前言
最近刚读完一本书:《Netty、Zookeeper、Redis 并发实战》,个人觉得 Netty 部分是写得很不错的,读完之后又对 Netty 进行了一波很好的复习(之前用 spring boot + netty + zookeeper 模仿 dubbo 做 rpc 框架,那时候是刚学 netty 后自己造的小轮子)。
虽然对于 Netty 的使用已经比较熟悉了,而且还知道它的底层是基于 Java NIO 做进一步的封装,使得并发性能和开发效率得到大大的提升。但是,对于同步阻塞、同步非阻塞、异步这些概念,还是比较的模糊,一直处于似懂非懂的状态。
所以这两天,一直在网上看看大家对此的评论,也得到了一些启发。而且还有很多同学们提到了 《Netty 权威指南 第二版》 这本书,说前两章对于网络 I/O 模型和 Java I/O 的介绍很不错,所以我也特意去找了一本 pdf 来看看(比较穷。。。)。看了前两章后,确实对于这方面的概念清晰了不少,所以决定写下此文章来记录一下,也分享给更多不清楚这方面理论的同学们,并且也下定决定,有空一定把这本书继续看完,哈哈哈。
一面50min
- 自我介绍
- Java集合
- LinkedList与ArrayList
- fail-fast
- CAS
- reentrantlock
- synchronized
- 线程池
- mysql引擎
- 事务隔离级别
- 索引
- B树与B+树,为什么用B+树
- mvcc
- redis的一些命令(了解的不多,因为都是用lettuce来操作)
- 合并有序数组
有一些忘记了,记得不太全,顺利通过了,然后过一会二面
二面50min
- 自我介绍
(面试官发现他想问的上一面问过了) - AtomicInteger在什么情景下使用(并发多线程,举例线程池、锁)
- 建立一个数据库,存储抢课的情景
- 根据上面的数据库写sql
- 自己实现一个栈
- 遍历一个路径下文件大小最大的文件路径(写伪代码即可,因为我们都忘了相关的api)
- 手写一个单例(我写了双重检测)
(忘了用static修饰),然后顺便说了下为什么要用static修饰 - 为什么synchronized要写在两个if中间
- 其他的一些非技术的问题
应该是通过了,我看到昨晚有人接到三面的安排以为我凉了,没想到hr说因为今天安排不过来了 ??
《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源
Java开发优秀开源项目:
-
ali1024.coding.net/public/P7/Java/git
- github.com/spring-projects
最后
我还为大家准备了一套体系化的架构师学习资料包以及BAT面试资料,供大家参考及学习
已经将知识体系整理好(源码,笔记,PPT,学习视频)