关注
你好,感谢分享面试经验。看起来这位面试官比较注重技术细节和深度,考察的范围也比较广泛。以下是我的回答:
1. GMP,有锁吗?
GMP是GNU多精度库,是一个用于高精度计算的库。它是线程安全的,但是并没有提供锁机制,而是使用了一些其他的技术来保证线程安全,比如原子操作和临界区。
2. channel底层,啥时候阻塞
channel底层是使用mutex和条件变量来实现的。当channel为空或者已满时,读写操作会被阻塞。
3. map安全吗,有序吗,哪些能当key
map是并发不安全的,需要使用锁来保证并发安全。map是无序的,遍历时的顺序是随机的。map的key必须是可比较的类型,比如int、string等。
4. sync.Map读取逻辑你自己设计
sync.Map的读取逻辑是先尝试从read map中读取,如果不存在则从dirty map中读取,如果还不存在则返回nil。我的设计思路是使用两个map,一个read map和一个dirty map,读取时先从read map中读取,如果不存在则从dirty map中读取,同时将读取到的值存入read map中,这样下次读取时就可以直接从read map中读取了。
5. 索引大杂烩
索引是数据库中用于提高查询效率的一种数据结构。幻读是指在一个事务中,由于其他事务的插入或删除操作,导致同样的查询语句返回不同的结果。解决方案可以使用锁或者MVCC机制。联合索引是指使用多个列作为索引的键值,可以提高查询效率。索引下推是指在查询时,将过滤条件下推到索引层级,可以减少查询的数据量。Redis中的数据结构包括字符串、列表、集合、有序集合和哈希表。消息队列可以使用RabbitMQ、Kafka等实现,可以用于异步处理任务、解耦系统等。分布式锁可以使用Zookeeper、Redis等实现,可以用于控制分布式系统中的资源访问。限流可以使用令牌桶算法、漏桶算法等实现,可以用于控制系统的并发量。持久化可以使用数据库、文件等实现,可以用于保证数据的可靠性和持久性。
6. 为什么是三次握手?TIME_WAIT状态意义?
三次握手是为了建立可靠的连接,防止出现已失效的连接请求报文段被服务端接收并产生错误。TIME_WAIT状态是指在TCP连接关闭时,等待2MSL时间,以确保最后一个ACK报文段能够到达对端,防止出现已失效的连接请求报文段被服务端接收并产生错误。
7. 四次挥手可不可以是三次
四次挥手是为了保证数据传输的可靠性,防止出现数据丢失或重复。因此四次挥手是必要的,不能简化为三次。
8. 进程和线程区别,协程有什么好处
进程是操作系统资源分配的基本单位,拥有独立的内存空间和系统资源。线程是进程中的执行单位,共享进程的内存空间和系统资源。协程是一种轻量级的线程,可以在同一个线程中实现多个协程的切换,减少线程切换的开销,提高程序的并发性和性能。
9. linux命令大杂烩
Linux命令包括文件操作命令、进程管理命令、网络命令、系统管理命令等。常用的命令包括ls、cd、mkdir、rm、cp、mv、ps、kill、top、ifconfig、ping、netstat、iptables、df、du等。
查看原帖
1 评论
牛客热帖
更多
正在热议
更多
# 什么是优秀的实习经历 #
8853次浏览 218人参与
# 实习简历求拷打 #
14191次浏览 166人参与
# 被上班搭子“传染”了哪些习惯 #
5871次浏览 99人参与
# 秋招被挂春招仍然能投的公司 #
7166次浏览 101人参与
# 工作后,你落下了哪些病根 #
14006次浏览 191人参与
# 作业帮求职进展汇总 #
83564次浏览 547人参与
# 外包能不能当跳板? #
54185次浏览 256人参与
# mt对你说过最有启发的一句话 #
37447次浏览 444人参与
# 摸鱼被leader发现了怎么办 #
102486次浏览 650人参与
# 一起聊美团 #
307346次浏览 1764人参与
# 秋招特别不鸣谢 #
16102次浏览 181人参与
# 投格力的你,拿到offer了吗? #
153054次浏览 817人参与
# 考研失败就一定是坏事吗? #
201718次浏览 1377人参与
# 选实习,你更看重哪方面? #
14588次浏览 221人参与
# 京东开奖 #
631758次浏览 3180人参与
# 京东美团大战,你怎么看? #
158209次浏览 861人参与
# 安克创新求职进展汇总 #
62420次浏览 541人参与
# 第一次面试 #
1036660次浏览 13683人参与
# 今年秋招你收到了多少封邮件? #
18186次浏览 220人参与
# 担心入职之后被发现很菜怎么办 #
266480次浏览 1133人参与

