Golang 开发岗。
一面 1h
- 计算机组成是哪五个部分?(运算器、控制器、存储器、输入设备和输出设备)
- TCP/IP 四次挥手
- TCP 拥塞控制和流量控制
- 网络通信双方的流程(服务端:bind、listen、accept;客户端:connect)
- socket 如何标识
- 二进制的原码反码补码
- 计算机中的文字乱码,字符集和字符编码的含义、如何区分?(文章)
- 程序的“压栈”“出栈”含义?
- 项目/实习经历
- 从现在的视角看,你觉得你的项目有哪些不足,技术方面可以如何改进?
- channel 在哪些场景下使用会 panic?(关闭 / 写入一个已经关闭的 channel)
- golang 源码有了解吗?
- GPM 模型
- 什么情况下 M 会进入自旋的状态?(M 是系统线程。为了保证自己不被释放,所以自旋。这样一旦有 G 需要处理,M 可以直接使用,不需要再创建。M 自旋表示此时没有 G 需要处理)
- Linux 经常使用的命令;awk 用过吗
- 进程、线程、协程的区别
- go 里的 syncLock 和 channel 的性能有区别吗?
二面 1h
- 自我介绍
- 实习经历细节
- 实习中最大的挑战点有哪些?
- 自己做过压力测试吗?关注哪些指标?
- 怎么算 QPS?
- React / Vue 等前端框架的区别
- Golang 怎么在并发编程中等待多个 goroutine 结束?
- 内存分配的不同方法的优缺点(固定分区、动态分区、页式分配)
- Golang 内存分配的实现
- Golang slice 不断 append,是如何给它分配内存的?slice 如果分配的 capacity 是 10,那当容量到多大的时候才会扩容?8、9、10?
- 介绍一下对缓存的理解(系统层面(L1、L2、L3)、网络层面(浏览器缓存)、服务器层面(redis))
- redis 的数据结构;set、list 等的使用场景;zset 的原理与使用场景
- Linux nginx 日志文件找出现次数最多的 ip(sort、uniq、awk)
- Linux 查看一个端口的运行情况
- 用过定时任务吗?
- 算法:数组找 top k,时间复杂度分析(快排、堆排)
- top k 有没有 O(k) 的方法?(我说数组大小是 n,那肯定至少遍历一次 O(n) 吧。面试官:和桶排序的思路差不多)
- 快排的时间复杂度是 O(nlogn),你有哪些优化时间复杂度的方法吗?比如空间换时间(不会)
- 算法:实现 LRU
- 个人的学习方向、学习计划
全部评论
(7) 回帖