知乎后端开发工程师 1面
1面是技术面
涉及知识点
数据库
- 为什么用索引,什么时候用索引
- 最左匹配原则
- b+树讲讲
- 事务隔离级别*4 + 脏读不可重复读 + 幻读
- 事务的 ACID 都啥意思
- MVCC 能讲讲不
- limit 分页是物理还是逻辑?
- 写个SQL,具体忘记了,就是个列子查询
多线程
- 什么是线程安全问题
- 如何解决线程安全问题?(答:加锁..,讲了 java 的悲观锁实现 synchorized、乐观锁的 CAS )
- 有没有其他的非锁解决的?(我没答出来)
操作系统相关
- Linux 想查看进程、某某端口,怎么写命令
- 进程线程的区别
- 进程间如何通信?
- 线程间如何通信?
网络、爬虫(因为我实习做爬虫的)
- HTTP 报文格式
- TCP 三次握手、四次挥手
- 为什么挥手多一次呢? 答:因为 TCP 是全双工,必须双方确定没有数据发送,才能断开连接。
- DNS 解析是什么东东?
- 爬虫如何解决你的python程序和用户请求不一致的问题? 答:一般是拿cookie试一试,不行就抓包,看看包之间的差异
- 有没有了解一些网络漏洞、攻击相关的? 答:SQL注入、爬虫高并发请求、CSRF
设计模式
- 说说你了解的设计模式
- 简单工厂和抽象工厂,区别是什么,都干嘛的,做过类似的实践吗?
- 单例模式讲讲 --> 懒汉、饿汉、双重锁、反序列化,应用场景:配置类,比如 Spring 的那个上下文 ApplicaionContext (好像是这么拼的)