面试

编程语言

python

  1. 多重继承,如果基类有相同方法,从左向右寻找;
  2. python 中如何管理内存,python 有一个私有堆内存来放置所有对象和数据结构;
  3. 谈一下 GC;
  4. python 协程和 golang 协程有什么区别;
  5. 什么是上下文管理器;
  6. 什么是闭包;
  7. 深拷贝和浅拷贝区别;
  8. 数组和元组的区别; // (1, 2), [1, 2] 占用内存大小相同吗?
  9. type 作用;
  10. 列表反置;
      1. a[::-1]
    • a.reverse() # 修改原数组;
  11. 判断变量类型
    • type
    • isinstance
  12. 如何判断两个对象相同
    • is
    • == # __eq__

go

  1. 解释下GPM;
  2. Slice 和数组的区别(切片是指向数组的指针);
  3. 怎么实现同步(waitGroup);
  4. 什么是 Context;
  5. defer 的执行顺序;
  6. 怎么进行异常处理;
  7. channel 是什么?
  8. 有那些方式安全读写共享变量(Mutex)?
  9. 无缓冲 chan 的发送和接收是否同步?
  10. JSON 标准库对 nil slice 和 空 slice 的处理是一致的吗
  11. init() 函数是什么时候执行的
  12. 2 个 interface 可以比较吗 ?
  13. = 和 := 的区别
  14. Go 支持默认参数或可选参数吗

shell

  1. 单引号和双引号区别;
  2. 如何只输出一个文件第十行;
  3. 系统磁盘满了,如何找出哪个目录或文件占用空间比较大;

计算机网络

  1. HTTP 长连接和短连接的区别;
  2. HTTP 常用状态码: 204, 202 是什么意思?
  3. 谈谈什么是多路IO 复用,以及常用的方式,select, poll, epoll 之间的区别

数据库

redis

  1. 常用数据结构
    • string
    • list
    • set
    • sorted set
    • hash
  2. 怎么实现分布式锁
  3. 持久化有哪些方式
  4. 淘汰策略

数据结构

消息队列

  1. 消息队列的作用;
  2. kafka 是推模式还是拉模式;
  3. kafka 经常 reblance 如何解决;
  4. kafka 为什么快?
    • Cache Filesystem Cache PageCache缓存
    • 顺序写 由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。
    • Zero-copy 零拷技术减少拷贝次数
    • Batching of Messages 批量量处理。合并小的请求,然后以流的方式进行交互,直顶网络上限
    • Pull 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。
  5. 如何保证重复消息只消费一次;

操作系统

Linux

  1. 请求超时,如何分析;
  2. 文件权限,解释 777
  3. lsattr
  4. 进程查看
  5. 进程堆栈分析

系统/服务日志

  1. 服务日志查看
  2. messages
  3. journactl
  4. dmesg

网络

  1. IO 查看
  2. 端口查找
  3. TCP 统计

CI/CD

  1. Jenkins 怎么统一管理 job;
  2. 怎么编写 gitlab pipline

工具

  1. git stash 怎么用;
  2. git cherry-pick 怎么用;

监控告警

  1. prometheus 怎么统计 QPS, nginx + 多 api 代理

算法

  1. 抽奖算法,1-100 中随机抽一个;

VUE

  1. VUE的生命周期及理解
  2. v-if和v-show的区别
  3. vue组件的通信
  4. computed和watch的用法和区别?