上海松鼠云上人工智能技术有限公司(米学) Go开发面经

电话面,26min,八股文大杂烩。

  1. GMP,有锁吗?
  2. channel底层,啥时候阻塞
  3. map安全吗,有序吗,哪些能当key
  4. sync.Map读取逻辑
  5. 你自己设计map会怎么设计?
  6. 索引大杂烩
  7. 幻读,解决方案
  8. 联合索引,索引下推
  9. 回表
  10. Redis数据结构,应用场景
  11. 消息队列怎么实现,分布式锁怎么实现,限流怎么实现
  12. 持久化,会阻塞吗
  13. 为什么是三次握手?TIME_WAIT状态意义?
  14. 四次挥手可不可以是三次
  15. 进程和线程区别,协程有什么好处
  16. linux命令大杂烩。

#软件开发2023笔面经##牛客解忧铺#
全部评论
你好,感谢分享面试经验。看起来这位面试官比较注重技术细节和深度,考察的范围也比较广泛。以下是我的回答: 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 回复 分享
发布于 2023-03-24 15:37 AI生成
这个几面的面经?
点赞 回复 分享
发布于 2023-03-24 22:39 山西
楼主现在上岸了没?
点赞 回复 分享
发布于 2023-03-24 22:39 山东
这家公司我去年面过,当时那个面试官跟我说他们的主要业务就是卖学习机
点赞 回复 分享
发布于 2023-03-27 08:34 江苏
请问一下这是在哪投的呢?
点赞 回复 分享
发布于 2023-03-29 15:16 北京
问的差不多内容,oc拒了
点赞 回复 分享
发布于 2023-04-03 23:51 重庆

相关推荐

评论
2
21
分享
牛客网
牛客企业服务