面试¶
编程语言¶
python¶
- 多重继承,如果基类有相同方法,从左向右寻找;
- python 中如何管理内存,python 有一个私有堆内存来放置所有对象和数据结构;
- 谈一下 GC;
- python 协程和 golang 协程有什么区别;
- 什么是上下文管理器;
- 什么是闭包;
- 深拷贝和浅拷贝区别;
- 数组和元组的区别; // (1, 2), [1, 2] 占用内存大小相同吗?
- type 作用;
- 列表反置;
- a[::-1]
- a.reverse() # 修改原数组;
- 判断变量类型
- type
- isinstance
- 如何判断两个对象相同
- is
- == # __eq__
go¶
- 解释下GPM;
- Slice 和数组的区别(切片是指向数组的指针);
- 怎么实现同步(waitGroup);
- 什么是 Context;
- defer 的执行顺序;
- 怎么进行异常处理;
- channel 是什么?
- 有那些方式安全读写共享变量(Mutex)?
- 无缓冲 chan 的发送和接收是否同步?
- JSON 标准库对 nil slice 和 空 slice 的处理是一致的吗
- init() 函数是什么时候执行的
- 2 个 interface 可以比较吗 ?
- = 和 := 的区别
- Go 支持默认参数或可选参数吗
shell¶
- 单引号和双引号区别;
- 如何只输出一个文件第十行;
- 系统磁盘满了,如何找出哪个目录或文件占用空间比较大;
计算机网络¶
- HTTP 长连接和短连接的区别;
- HTTP 常用状态码: 204, 202 是什么意思?
- 谈谈什么是多路IO 复用,以及常用的方式,select, poll, epoll 之间的区别
数据结构¶
消息队列¶
- 消息队列的作用;
- kafka 是推模式还是拉模式;
- kafka 经常 reblance 如何解决;
- kafka 为什么快?
- Cache Filesystem Cache PageCache缓存
- 顺序写 由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。
- Zero-copy 零拷技术减少拷贝次数
- Batching of Messages 批量量处理。合并小的请求,然后以流的方式进行交互,直顶网络上限
- Pull 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。
- 如何保证重复消息只消费一次;
操作系统¶
Linux¶
- 请求超时,如何分析;
- 文件权限,解释 777
- lsattr
- 进程查看
- 进程堆栈分析
系统/服务日志
- 服务日志查看
- messages
- journactl
- dmesg
网络
- IO 查看
- 端口查找
- TCP 统计
CI/CD¶
- Jenkins 怎么统一管理 job;
- 怎么编写 gitlab pipline
工具¶
- git stash 怎么用;
- git cherry-pick 怎么用;
监控告警¶
- prometheus 怎么统计 QPS, nginx + 多 api 代理
算法¶
- 抽奖算法,1-100 中随机抽一个;
VUE¶
- VUE的生命周期及理解
- v-if和v-show的区别
- vue组件的通信
- computed和watch的用法和区别?