前言
这篇文章是个人对后端工程师的面试复习点总结,不求面面俱到,只求发挥实效。你也可将你面试时遇到的值得记录下来的问题发给我,丰富这篇文章,感谢~
- 本文仅包括目录,查看答案请点击超链接。
- 每个题目的答案我都会上传文章供各位参考,但完成需要一点时间,请耐心等待。
- 如出现任何错误之处,请指出~
注明
本文中的题目多参考于网络,如果侵犯了您的权利或您有注明来源的要求,请给我留言,谢谢。
答案均为个人整理发布,转载请注明来源:https://blog.csdn.net/sc_lilei/article/details/87098343
正文
1、语言基础方面
Python基础(已发布)
Golang:着重于(接口,chan,sync.map ,并行并发区别,协程,锁)
2、数据库
Mysql(已发布)
1、谈谈mysql字符集和排序规则?
2、varchar与char的区别是什么?大小限制?utf8字符集下varchar较多能存多少个字符
3、primary key和unique key区别?
4、外键有什么用,是否该用外键?外键一定需要索引吗?
5、myisam与innodb的区别?innodb的两阶段锁定协议是什么情况?
6、索引有什么用,大致原理是什么?设计索引有什么注意点?
7、如何存储IPv4?-- 使用int配合自带函数inet_aton和inet_ntoa
8、哪些情况索引不生效?
9、什么是最左匹配原则?
10、说说悲观锁和乐观锁
11、关于join
12、MySQL为什么使用B+树?
13、什么是幻读?什么情况会发生?怎么解决呢?
Mongo(已发布)
1、mongo的适用场景和不适用的场景
2、mongo的简单查询、聚合查询使用
3、如何执行事务/加锁?
4、mongodb中的(namespace)是什么?
Redis(已发布)
1、什么场景用redis,为什么mysql不适合?
2、谈谈redis的事务?用事务模拟原子+1操作?原子操作还有其它解决方案吗?
3、redis内存满了会怎么样?
4、和memcache的区别?
5、为什么是单线程的?
6、redis的aof太大如何优化
3、分布式相关
1、什么是分布式,为什么需要分布式? 和集群的区别是什么?
2、谈谈分布式通信协议
3、说说分布式事务(产生原因,业务背景,解决方案)
4、如何解决最终一致性问题?
5、分布式锁有哪些方案,如何选择?
6、扩展:主流的负载均衡算法原理了解一下
4、网络协议相关(已发布)
1. GET和POST区别,HTTP状态码了解哪些?
2. Session和COOKIE的区别?Session如何管理?
3. HTTPS的解释?
4. 简述HTTPS密钥协商过程
5. 简述跨域产生背景以及常见的解决方案
6. 解释一下socket长连接
7. 谈谈select和epoll
8. TCP与UDP区别;简述三次握手和四次挥手过程
9. time_wait过多的原因?
10. close wait什么出现?
11. 一个http请求由哪几部分组成?
12. 谈谈http长连接和短连接
5、操作系统相关(已发布)
1、进程与线程的区别(资源、调度、开销、通信 4个方面来对比)?
2、进程间通信(对应python、golang如何实现的)
3、线程间通信(对应python、golang(协程)如何通信的)
4、Linux常用的监控资源使用率的命令?(top,free)
5、Linux其他常用命令
6、了解协程么,轻量体现在哪儿?
7、结合OSI七层模型解释一下数据从一台计算机到另一台计算机的过程?
8、描述一下Socket?
6、其他
1、谈谈乐观锁与悲观锁
2、并发的解释、产生原因、几种实现方式、实现并发时的同步
3、websocket协议的解释,应用场景
4、NIO的原理和,连接切换方式
5、线程池的实现原理
6、消息队列同时消费问题
7、非理论题目
1、遍历一个内部位置的文件夹有几种方式?
2、手写快排,快排的平均时间复杂度是多少,最坏情况如何优化?
3、【手写】:一个列表A=[A1,A2,…,An],要求把列表中所有的组合情况打印出来
4、【手写】:用一行python写出1+2+3+…+10**8 答案:s = sum([x for x in range(1,10**8+1)])
5、【手写】:用递归方式判断回文
6、【手写】LFU,要求get和put都为O(1)
7、两支不均匀香,烧完每根都只需1小时,如何测出15分钟?
8、你会怎样设计秒杀场景的后台?秒杀时如果机器资源有限怎么办呢(别看答案,先自己尝试下)?
9、【上机】用两个线程分别打印0-100之间的奇偶数