字节跳动_广告业务_一面
自我介绍
介绍一下go的协程,调度模型?
go中的channel是线程安全的吗?如果是的话,他的底层是怎么实现线程安全的?
go中的channel一般用来做什么?从cpu的角度说说channel是怎么通知阻塞的线程的?
如果channel中只有一个信息,此时有多个goroutine从同时读这个channel,会发生什么?会唤醒所有goroutine吗?鲸群效应了解吗?怎么优化?
go中的切片和map都是线程安全的吗?如果让你实现一个线程安全的map,你要怎么实现?
mongodb和mysql的区别?
mysql的索引介绍一下?B+树的查找时间复杂度?具体的查找过程呢,举个例子?
mysql一次读操作要多少次磁盘IO呢,怎么估算的?
mysql中聚簇索引和非聚簇索引的区别?聚簇索引B+树中叶子节点存的是什么?具体一行数据,还是这行数据在磁盘上的物理地址?
mysql中查询缓存了解吗?为什么mysql中查询缓存命中率会很低?写操作对查询缓存会造成什么影响?
mysql中buffer pool的脏页是什么?和普通页有什么区别?
redis中的常用的数据结构?
redis中hashmap的底层是怎么实现的?
哈希冲突了怎么办?除了拉链法,还有其他方法吗?
多次哈希?效率会不会很低?怎么优化?
redis和mysql的区别?redis为什么快?redis是单线程的吗?是怎么保证高效率?
redis的线程模型?除了工作线程,还有哪些主要的线程?
redis的内存清理策略?对于设置了ttl的key的清理策略?是懒删除吗?懒删除是怎么个过程?
redis频繁插入和删除会不会产生大量内存碎片?如果会,要怎么优化?
手撕:只用一个原子变量实现一个读写锁
总结:手撕写的有bug,需要提示才能写对,已挂!