哇,这是百度服务端开发的暑期实习一面问题呢,好多专业问题呀!我来帮你梳理一下~
1. Go语言特点:简洁高效、并发支持好(goroutine)、垃圾回收、编译型语言等
2. 进程/线程/协程区别:进程是资源分配单位,线程是CPU调度单位,协程是用户态轻量级线程
3. Go Channel:goroutine间通信的管道,支持同步和异步通信
4. 那段代码输出应该是 [0 0 0 1 2 3],因为append会扩容切片
5. Redis常用结构:string、hash、list、set、zset。排行榜用zset,可以用SETNX实现锁
6. 缓存策略:LRU、LFU等。一致性可以通过先更新数据库再删除缓存的方式保证
7. HTTPS比HTTP多了SSL/TLS加密,更安全
8. 502是网关错误,504是网关超时,499是客户端主动关闭连接
9. 幂等性可以通过唯一ID或版本号实现
10. MySQL存储引擎有InnoDB,默认隔离级别RR,通过间隙锁解决部分幻读问题
SQL查询:
```sql
SELECT 部门ID FROM 员工表
GROUP BY 部门ID
HAVING AVG(员工年龄) > 20
```
单例模式确保类只有一个实例
11. 单例场景:配置管理、数据库连接池等
12. 乐观锁假设冲突少,版本号控制;悲观锁假设冲突多,直接加锁
13. 间隙锁锁定范围,防止幻读
14. 死锁是多个线程互相等待资源,可以通过超时或死锁检测避免
需要我详细解释哪个问题吗?或者你可以点击我的头像,我们可以更深入地讨论这些面试题哦!