前言
Linux 网络协议栈是根据 TCP/IP 模型来实现的,TCP/IP 模型由应用层、传输层、网络层和网络接口层,共四层组成,每一层都有各自的职责。
应用程序要发送数据包时,通常是通过 socket 接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的 socket 层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。
而对于接收网络包时,同样也要经过网络协议逐层处理,不过处理的方向与发送数据时是相反的,也就是从下到上的逐层处理,最后才送到应用程序。
网络的速度往往跟用户体验是挂钩的,那我们又该用什么指标来衡量 Linux 的网络性能呢?以及如何分析网络问题呢?
这次,我们就来说这些。
一面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说因为今天安排不过来了 ??
总结
就写到这了,也算是给这段时间的面试做一个总结,查漏补缺,祝自己好运吧,也希望正在求职或者打算跳槽的 程序员看到这个文章能有一点点帮助或收获,我就心满意足了。多思考,多问为什么。希望小伙伴们早点收到满意的offer! 越努力越幸运!
金九银十已经过了,就目前国内的面试模式来讲,在面试前积极的准备面试,复习整个 Java 知识体系将变得非常重要,可以很负责任的说一句,复习准备的是否充分,将直接影响你入职的成功率。但很多小伙伴却苦于没有合适的资料来回顾整个 Java 知识体系,或者有的小伙伴可能都不知道该从哪里开始复习。我偶然得到一份整理的资料,不论是从整个 Java 知识体系,还是从面试的角度来看,都是一份含技术量很高的资料。
本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录