2020腾讯后端面试题以及解答(golang方向)

1、goalng相关

Q:context作用,原理,超时控制

A: golang context的理解,context主要用于父子任务之间的同步取消信号,本质上是一种协程调度的方式。另外在使用context时有两点值得注意:上游任务仅仅使用context通知下游任务不需要,但不会直接干涉和中断下游任务的执,由下游任务自行决定后续的处理操作,也就是说context的取消操作是无侵入的;context是线程安全的,因为context本身是不可变的(immutable),因此可以放心地在多个协程中传递使用。

Q:切片和数组区别

A: 基础问题。

Q:channel关闭阻塞问题,goroutine如何调度,gopark是怎么回事?PMG模型描述,谁创建的PMG,runtime是怎么个东西,怎么启动第一个goroutine

A: golang CPS并发模型和PMG模型的理解。

Q:go逃逸分析怎么回事,内存什么时候栈分配什么时候堆分配

R: 内存方面问题,这个网上很多,自己理解完整正确。

Q:sync.Map实现原理,适用的场景

A:go 1.9 官方提供sync.Map 来优化线程安全的并发读写的map。该实现也是基于内置map关键字来实现的。

这个实现类似于一个线程安全的 map[interface{}]interface{} . 这个map的优化主要适用了以下场景:

(1)给定key的键值对只写了一次,但是读了很多次,比如在只增长的缓存中;

(2)当多个goroutine读取、写入和覆盖的key值不相交时。

更进一步,可看sync.Map源码。

Q:go语言有什么优点和缺点

A: 优势:容易学习,生产力,并发,动态语法。劣势:包管理,错误处理,缺乏框架。

Q:Go框架用过哪些,有看源码吗

A: 优势:beego,go-micro,gin等

Q:Go GC算法,三色标记法描述

A: 自己找,网上有

Q:Go内存模型(tcmalloc)

A:tcmalloc是线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数

Q:行列都是有序的二维数组,查找k是否存在,时间复杂度

1 3 5 7 9

3 5 7

  • 9
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值