面试时长整整一小时
手写代码题
- goroutine交替打印1 - 100 以内的奇数偶数
- ******************** (有一些修改,大致一样)
八股文
- 项目中使用go语言遇到过哪些问题
- 在go语言中 chan 有什么作用
- select的作用(举了实际的例子具体的实现)(比如说满足第一个case 会进第二个case吗)
- context的作用(举了实际的例子具体的实现)
- 数组和切片的切片(举了实际的例子,以及怎么扩容的)
- 内存逃逸(什么情况下会发生逃逸,详细说明)
- 逃逸是好还是坏
- 如何避免内存逃逸
- 哪些不能作为go map的key ,哪些可以作为key,为什么不能?
- map 是协程安全的吗
- 如何在 map 的基础上实现协程安全
- 加锁之后如何避免死锁的情况
- map的底层如何实现
- GMP模型
- go的协程可以用到多核吗???
- 进程、线程、协程的区别
- fork出来的子进程将父进程杀掉会发生什么事情
- 孤儿进程有什么危害
- 孤儿进程如何找到 init 进程
- 单例模式是啥,在go语言中如何实现
- MySQL 如何实现 acid
- mvcc 的原理(我说会创建一个快照,这时候面试官说数据库数据那么大,要是创建一个快照那不炸了?)
- 多个事务实际处理的情况(主要是考察可重复读下是否会出现脏读,以及是否会加锁)
- 临键锁是什么
- http 的 keepalive 是啥
- http 和 https 的区别
- https 如何加密
- https 用到的是非对称加密还是对称加密吗,只有非对称加密吗?
反问
- base是在北京还是深圳
- 如果要适应您这份工作还需要哪些技能(背八股文的时候加上自己的理解)
- 会有三轮面试
最后面试官还有提到一点说 go map的底层代码中处理冲突的方式是开放定址法,额,但我查了好像基本上都说的是链表法处理冲突来着,不知道有没有了解这个的同学聊聊这个呢?
#软件开发2023笔面经##如何判断面试是否凉了#