Skip to content

Latest commit

 

History

History
44 lines (38 loc) · 2.05 KB

面试题.md

File metadata and controls

44 lines (38 loc) · 2.05 KB

1.基础 1)chan和mutex有什么不同,各自有哪些优缺点 2)golang的map是并发安全的吗? 3)原子操作和锁的区别? 考察变量和临界区 4)new一个结构体变量和不用new的方式,分配的内存是在堆上还是栈上? 一个函数内的new的局部指针变量作为参数传递给其他函数,该指针指向的内存 是分配在堆上还是栈上? 考察逃逸分析

2.调度 1)件数golang的协程调度模型 2)如果一个协程一直进行cpu消耗型的计算,该协程会不会出让cpu? 3)假设一个golang程序,有4个调度县城进行协程调度,当某一线程上的协程队列 的一个协程一直进行cpu消耗的计算,这个队列的其他协程会不会一直不执行? 考察调度,其他调度线程空闲时会抢过去

3.gc 1)一个golang程序中有很多协程,每个协程中有很多局部变量,这里怎么进行gc 优化? 2)一个map的需要存100万个key-value,key是int,value需要存复杂类型比如结 构体的内容,这里value是存结构体的指针还是直接存结构体对象比较好? 如果结构体size较小,直接存value可以减少gc。 key也需要尽量减少gc,存值类型。 3)并发量大时是否需要做协程池?为什么?

4.数据结构和算法 1)常用哪些数据结构?最喜欢哪些/哪种数据结构,为什么? 2)c++ stl比如vector、list、map分别是什么数据结构实现的? 3)对比下红黑树和hash,各自有哪些优缺点? 4)游戏的玩家积分排行榜怎么做? 5)消息广播风暴,如何优化?

5.网络 1)tcp三路握手和四路断开的步骤? 2)服务端主动断开连接进行正常的四路断开,服务端的socket会处于什么状态? 有何影响?怎么解决? 3)tcp协议本身有keepalive,应用层还需要做超时检测吗?为什么? 4)件数一些tcp和udp的区别? 5)http和websocket有什么区别和联系?

6.数据库 1)