小米Golang开发一面凉经

总的来说小米算是凉了,go的代码(尤其是channle和协程的部分)没写过多少是硬伤。
开始先自我介绍,我说我是来自西安邮电大学,叫xxx,今年读研三。平常在学校喜欢研究系统方面的知识,平常主要用c,和go。主要研究方向是Linux内核(不要脸的说了内核)。然后开始就问项目,我就讲了我简历上的两个项目(只是很简单的讲,比之前讲的要简单多了)。
然后就开始问golang的基础知识,问切片和数组的区别,这个答得还行,然后又开始问map的底层实现,我就开始懵了,在脑海里搜索了半天,也想不起来什么,就说对不起这块我不是很了解。然后他就问我,golang你了解那块,我说协程和channel比较了解,然后他让我讲讲,我就把早上写到便利贴上的东西,给他讲了讲,感觉讲的时候也比较然,因为我也没有整理过这块的知识。然后就不让我讲了,让我讲讲向一个已经关闭了的channel写入数据会怎样,我想了半天,说应该会报错的。然后他又问怎么判断一个channel已经关闭了,我瞬间就有点慌了,还是感觉没碰到过这种问题(但是后来看了看,判断方法还是比较简单的)。我说对不起,这块不是很清楚。然后他又问了defer的问题,问defer是怎么执行的,我就讲了讲。又问return和defer哪个最后执行,开始说的是return最后执行,想了想感觉不对,又说defer最后执行,面试官问我确定吗,我说确定。又问GC了解吗,我说只是很简单的了解。我说golang的GC是并行的GC,它还是基于标记清除算法的,然后使用三色标记和写屏障去实现并行GC,就是说GC协程和业务逻辑可以并发进行。结果这个答案面试官可能并不是很满意,就问我具体呢,我又慌了,具体怎么讲啊,想了想把昨天看的三色标记讲了下,就说开始时所有的对象都是白色的,然后这些对象引用的对象又被标记为灰色,然后。。。然后。。。,在脑子里想了半天,也没想起来,就又灰溜溜的说对不起这块不是很了解。面试官就说好吧。
接下来可能看到我简历上说熟悉TCP/IP,就又问我,你TCP/IP熟悉到什么程度啊,我说就熟悉连接的建立和释放过程。就开始讲老一套,什么假设从客户端开始,客户端发送一个请求建立连接的包,他这个包的syn标志位置为1,再设置一个初始的序列号,然后把这个包发送给服务端,服务端收到这个包之后,就再发送一个确认的包,结果面试官说好了,那你讲下什么时候关闭TCP连接,我说就调close函数就关闭了,面试官又问除了这种手动关闭的方式呢,我想了想,又懵了,说对不起,这个不太了解,全程懵逼有没有。他又问那你了解TCPxx算法吗(对不起这块忘记了问的是什么)。我说就用于流量控制的滑动窗口协议。结果。。。面试官就让我讲滑动窗口,我。。。我说对不起我不太清楚这块。
差不多20多分钟了,他又开始问我未来想做哪一方面,我说未来想做系统方面的开发,把面试官说然了,他说我不太清楚你的意思,我就是就是系统软件方面的。那golang可能不是很合适,你说的Linux这块还是C比较多,要不我把你推到系统开发的部门。然后面试官问我有什么想问的,我就问他你们用golang主要是web开发吗,他说不是的,还有中间件就rabbitmq,redis之类的。我又问那容器你们做吗,他说docker是吧,我们的运维平台做这个,要不我把你推过去。我说不用了,我不会k8s。然后我又问我今天面试的怎么样,他说我没什么感觉,你golang基础还需要继续加强,55开吧(我心说卡卡西吗,还55开)。
以上,差不多算是比较糟糕的一次面试,不清晰的就业方向加薄弱的golang基础让我成功的凉了,算是凭实力凉的。
#小米##面经##校招##golang工程师#
全部评论
三色标记: 通过mspan查看是否被引用 灰色:对象已被标记,但这个对象包含的子对象未标记 黑色:对象已被标记,且这个对象包含的子对象也已标记,gcmarkBits对应的位为1(该对象不会在本次GC中被清理) 白色:对象未被标记,gcmarkBits对应的位为0(该对象将会在本次GC中被清理) 例如,当前内存中有A~F一共6个对象,根对象a,b本身为栈上分配的局部变量,根对象a、b分别引用了对象A、B, 而B对象又引用了对象D,则GC开始前各对象的状态如下图所示: 初始状态下所有对象都是白色的。 接着开始扫描根对象a、b; 由于根对象引用了对象A、B,那么A、B变为灰色对象,接下来就开始分析灰色对象,分析A时,A没有引用其他对象很快就转入黑色,B引用了D,则B转入黑色的同时还需要将D转为灰色,进行接下来的分析。 灰色对象只有D,由于D没有引用其他对象,所以D转入黑色。标记过程结束 最终,黑色的对象会被保留下来,白色对象会被回收掉。
2 回复
分享
发布于 2019-10-22 16:18
老哥,go的map是分bucket和链式结构,低八位找在哪个bucket,高八位找具体在bucket的哪个位置。我一般都是这么说的
1 回复
分享
发布于 2019-10-22 16:13
博乐游戏
校招火热招聘中
官网直投
关闭后的通道有以下特点: 对一个关闭的通道再发送值就会导致panic。 对一个关闭的通道进行接收会一直获取值直到通道为空。 对一个关闭的并且没有值的通道执行接收操作会得到对应类型的零值。 关闭一个已经关闭的通道会导致panic。
1 回复
分享
发布于 2019-10-22 16:20
哈哈,问的不算难,好好准备准备其实没问题的
1 回复
分享
发布于 2020-04-22 20:37
点赞 回复
分享
发布于 2019-10-22 16:22
请问楼主最后去哪了?
点赞 回复
分享
发布于 2020-11-17 14:20

相关推荐

10 57 评论
分享
牛客网
牛客企业服务