Skip to content

Latest commit

 

History

History
120 lines (89 loc) · 3.87 KB

interview.adoc

File metadata and controls

120 lines (89 loc) · 3.87 KB

面试前必看

Go 语言

  • Go 为什么这么快?

  • 聊聊 GPM?

网络

  • 三次握手、四次挥手

  • 四层和七层网络模型及各层的作用

    1. 七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

    2. 四层网络模型:网络接口层(物理层+链路层),网络层,传输层,应用层(会话层+表示层+应用层)

    3. 还有一个五层网络模型,即物理层,数据链路层,网络层,传输层,应用层

名称 作用 具体例子

物理层

传输 0 和 1 的电路信号

通过网线、光缆等传输 0/1 电路信号

数据链路层

将数据封装成帧,管理数据传输链路

通过以太网,打包一个个数据包(对应一组组电路信号),包含标头(指定本机的 mac 地址和目标 mac 地址)和数据,在子网内比较 mac 地址确定目标计算机

网络层

划分子网、ip 寻址、路由跳转

在一个子网内,是通过数据链路层的交换机和目标 mac 地址就可以通信;而不同的子网,则需要通过 ip 地址和路由器来实现跨子网通信

传输层

建立、管理端到端的连接

不同的应用占用不同的端口进行通信,通过 tcp/udp 协议在数据包中加入端口号,实现端口到端口的连接

应用层(将会话,表示,应用三层合成一层)

一系列为应用程序提供服务的协议

针对不同的应用,定义不同的协议,如邮件的 smtp,网页的 http

操作系统

  • 零拷贝是什么原理?

  • fork 的流程?

  • select/poll/epoll 的区别?

数据库

  • kafka

    1. 项目中为何选择Kafka

    2. 消息队列的优缺点

    3. Kafka如何保证数据时序性

    4. kafka如何保证数据不丢

    5. 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?

    6. 如何设计一个消息队列(模仿kafka的实现,说出大致意思即可)

redis/codis

mysql

  • 事务的隔离级别有哪几种?

  • mvcc

  • B+树于B树的区别

  • 覆盖索引

  • 索引下沉

  • 事务两阶段提交 redolog 和binlog bufferpool 顺序

  • MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景

  • 聚集索引和非聚集索引

  • 索引的优缺点,什么时候使用索引,什么时候不能使用索引

  • 索引下沉

  • 事务两阶段提交 redolog 和binlog bufferpool 顺序

中间件

etcd

nginx

lvs

系统设计

  • 微信群红包的设计

  • 秒杀系统的设计

  • 抖音播放量、点赞量的设计

  • 朋友圈关注、粉丝的设计

  • 断点续传功能设计

非技术

一次准备,随时吹牛

  • 你有什么优点,缺点?

  • 项目里最成功的地方/失败的地方?

  • 印象最深的一次 debug

  • 这两年(上一家公司)有什么收获、成长?经验、教训?

  • 你有什么问题需要问我的?

一面:当初来这里是怎么考虑的

二面:如果过来,会给我安排做什么方向;对这块的规划,有什么难点和挑战

三面:小组怎么分工,对前景的理解

HR:晋升体制、福利待遇、技术成长

关于博客

面试前要过一遍内容,并且要自我回答如下几个问题:

  1. 为什么写博客?

  2. 对实际工作有什么帮助,例子?

  3. 读 Go 源码有什么收获,体会? 杨文-《Go 夜读分享》:https://docs.google.com/presentation/d/1-OPi5xZRm-RSnpDrT-6SdGF6srccqejkhYJrxwf278Q/edit#slide=id.p

寻找开源软件的优点,不要盯着缺点,caoz的梦呓。比如曹大说的可以学到无锁化编程的技巧。