给以后的同学攒点golang的面经

戳 -> 校招-面经
我主要用的还是go,虽然语言不是很重要,但投的基本上是跟go有关的公司,也有一些c++的公司,想往go发展的可以参考我的面经

春招

春招基本上是过完年回来开始,建议寒假开始复习然后回来就可以找实习了。我春招投的比较晚,后面投的公司不是很多,基本被刷简历,能面试的只有七牛云,然而第一次面试被各种吊打,春招后面去了深圳一家小公司实习了两个月

七牛云

七牛云的技术还是不错的,虽然实习不想去上海(建议实习不要看地点,实习很短不要介意地点)

一面

  • go的调度
  • go struct能不能比较
  • go defer(for defer)
  • select可以用于什么
  • context包的用途
  • client如何实现长连接
  • 主协程如何等其余协程完再操作
  • slice,len,cap,共享,扩容
  • map如何顺序读取
  • 实现set
  • 实现消息队列(多生产者,多消费者)
  • 大文件排序
  • 基本排序,哪些是稳定的
  • http get跟head
  • http 401,403
  • http keep-alive
  • http能不能一次连接多次请求,不等后端返回
  • tcp与udp区别,udp优点,适用场景
  • time-wait的作用
  • 数据库如何建索引
  • 孤儿进程,僵尸进程
  • 死锁条件,如何避免
  • linux命令,查看端口占用,cpu负载,内存占用,如何发送信号给一个进程
  • git文件版本,使用顺序,merge跟rebase

秋招

实习到八月底就回来参加秋招了,然而还是被吊打,我的秋招一直持续到十一月初,主要还是想找深圳的公司,最终签了字节跳动。

360

360是秋招第一个面试的公司,在实习期间请假面试的,一天基本就面完所有流程,但最终还是进入备胎池(巨深),虽然也不想去北京,但还是点名批评360的备胎池

一面

一面是个小胖小胖的面试官,说我的实习经历挺丰富的(几个校内项目跟一个小公司实习项目),基本上问项目跟场景,中间穿插一些基础知识

  • 讲实习项目的简单业务流程,数据库有水平拆分什么的吗?没有,数据量还没到,然后没啥问的
  • Slice与数组区别,Slice底层结构
  • 项目里的微信支付这块,在支付完微信通知这里,收到两次微信相同的支付通知,怎么防止重复消费(类似接口的幂等性),说了借助Redis或者数据库的事务
  • 项目里的消息推送怎么做的(业务有关)
  • Go的反射包怎么找到对应的方法(这里忘记怎么问的,直接说不会,只用了DeepEqual,简单讲了DeepEqual)
  • Redis基本数据结构
  • Redis的List用过吗?底层怎么实现的?知道但是没用过,不知道怎么实现
  • Mysql的索引有几种,时间复杂度
  • InnoDb是表锁还是行锁,为什么(这里答不出来为什么,只说了行锁)
  • Go的channel(有缓冲和无缓冲)
  • 退出程序时怎么防止channel没有消费完,这里一开始有点没清楚面试官问的,然后说了监听中断信号,做退出前的处理,然后面试官说不是这个意思,然后说发送前先告知长度,长度要是不知道呢?close channel下游会受到0值,可以利用这点(这里也有点跟面试官说不明白)
  • 用过什么消息中间件之类吗?没有
  • 有什么问题吗?评价?后面还有面试,后面再问吧

二面

二面的面试官好像是部门技术总监,面完了加微信,可能需要Go的人,感觉很多不会然后给过了,面完面试官人超好,微信推荐我看书

  • 生产者消费者模式,手写代码(Go直接使用channel实现很简单,还想着面试官会不会不让用channel实现,不用channel的可以使用数组加条件变量),channel缓冲长度怎么决定,怎么控制上游生产速度过快,这里没说出解决方案,只是简单说了channel长度可以与上下游的速度比例成线性关系,面试官说这是一种解决方案
  • 手写循环队列
  • 写的循环队列是不是线程安全,不是,怎么保证线程安全,加锁,效率有点低啊,然后面试官就提醒Go推崇原子操作和channel
  • 写完代码面试官说后面问的问题回答就可以,不知道的话没关系
  • Linux会不会,只会几个命令,面试官就说一共也就一百多个命令
  • TimeWait和CloseWait原因
  • 线段树了解吗?不了解,字典树?了解
  • 看过啥源码,nsq(Go的消息中间件),简单问了我里面的waitgroup包证明我看过
  • sync.Pool用过吗,为什么使用,对象池,避免频繁分配对象(GC有关),那里面的对象是固定的吗?不清楚,没看过这个的源码
  • 有什么问题吗?评价?基础不错,Linux尚缺,Go的理解不够深入,高级数据结构不了解,优点是看源码
  • 后面面试官讲了他们做的东西,主要是广告部分,说日均数据量至少百万以上,多达上亿,高并发使用Go支撑,有微服务,服务治理,说我需要学的东西挺多的

CVTE

CVTE 面的是 C++ 开发,一面就挂了,记的面经不是很多

一面

  • 证明二叉树的叶子节点跟度数为2的节点的关系
  • 唯一索引和主键索引
  • 智能指针
  • 字符串解析为数字(考虑浮点型)

京东

京东本来是现场面的,但运气好,几轮的面试官都允许改成电话面试,岗位是京东云部门的Golang开发工程师,很少有大公司明招golang,面试官说主要做docker和跟调度相关。收到offer后给三天的时间考虑,虽然非常想去京东,方向也非常感兴趣,最终还是希望跟女朋友留在深圳就放弃了京东的offer。

一面

其中穿插一小部分扩展,例如单点登录,tcp粘包

  • 项目1
  • 项目2
  • 项目3
  • 手写洗牌

二面

  • 项目1处理粘包断包实现,面试官以为是negle算法有关,解释了下negle跟糊涂窗口综合征有关,然后面试官觉得其他项目是crud就没问了
  • 看什么书?以前看redis设计与实现之类的,现在看linux相关
  • goroutine调度用了什么系统调用,这个不会,面试官想从go问到操作系统,然后以为***作系统基础不好,就问了操作系统问题
  • 进程虚拟空间分布,全局变量放哪里?答上来了,操作系统就不问了
  • 有没有网络编程,有,怎么看连接状态?netstat,有哪些?ESTABLISHED,LISTEN等等,有异常情况吗?TIME_WAIT很多,为什么?大量短链接
  • 介绍部门

HR面

  • 优缺点

小米

小米的面试官喜欢突击,晚上八点多收到小米电话,问什么时候有时间面试,我说都可以,然后说现在?我:???,还是改到其他时间了。二面也是突击,刚想跟小伙伴吃鸡,就打电话直接面试。

一面

  • 解释goroutine,channel
  • c++ 和 go对比
  • java和go对比
  • 几种基本排序算法说一下,问了堆的时间复杂度,稳定性,为什么不稳定
  • topk问题,海量数据topk(回答成切分多次加载内存,然后用维持k长度的有序链表,然后被说时间复杂度不好,提示说还是用堆,然后哦哦哦对)
  • 最长连续字串和,这里我说的解决方案没用dp(对dp不熟),面试官一直引导我dp,还是不会
  • 什么是主键
  • 联合索引和唯一索引
  • 越多的索引越好吗?
  • 建立索引要注意什么?
  • 进程和线程区别?
  • 死锁?
  • tcp三次握手
  • http,https
  • 状态码401,301,302,201
  • 项目我说只有一台机子,所以用的单机部署,面试官说单机也可以部署多个,有什么方法吗?我说docker,问docker有哪些网络,不熟,dockerfile关键字,只答几个。顺便扯了下nginx转发。

二面

  • 数据库隔离级别,提交读会造成什么
  • go调度
  • goroutine泄漏有没有处理,设置timeout,select加定时器
  • 项目

南方基地

南方基地是属于中国移动的,看没有很合适的岗位,就投了云计算与运维工程师

HR面

  • 有什么offer
  • 为什么选择这个岗位
  • 成绩

二面

  • 看成绩
  • 怎么理解云计算
  • pg和mysql区别
  • mysql高可用的方案

4399

公司主要是java、erlang和php

一面

  • 进程线程区别
  • 排序算法以及时间复杂度
  • 怎么学习go
  • go的线程,给他讲了跟goroutine调度
  • io模型,同步阻塞,同步非阻塞,异步
  • cookie和session

HR面

  • 实习项目
  • 优缺点
  • 同学的评价
  • 兴趣爱好
  • 有什么offer

三面

  • MySQL DECIMAL(M,D) 中M和D是什么
  • 唯一订单号生成的算法问题

欢聚时代

欢聚时代好像是错过广州宣讲会时间了,然后那个时候约我面试是约到湖北现场面试,刚好那个时间段欢聚时代好像在湖北开宣讲会,于是联系好久hr才改到广州现场面试,最后还是凉凉

一面

  • 实习项目
  • 接口kps测试
  • redis排行榜数据结构(跳跃表),查询时间复杂度
  • redis分布式,如何减少同步延迟
  • mysql能实现redis的功能吗
  • 平时怎么学习?
  • 看什么书?
  • 兴趣爱好
  • 看过google四篇分布式论文吗,没看过
  • cap理论,举例
  • LRU算法,LFU
  • 讲讲怎么理解网络编程

点触科技

厦门的一家游戏公司,虽然他们服务端基本上是golang

HR技术交叉面

  • go使用踩过什么坑(for range,数据库连接defer close)
  • go优缺点
  • go命令,go get,go tool,go test,go vet
  • go的值传递和引用
  • 慢查询
  • 为什么使用pg
  • redis的数据类型

腾讯

腾讯基本上是最想去的公司之一,可惜一面挂了,有些不服。第二道算法给了一种做法,面试官想要另一种做法,在他的提醒下也做出来了,可能c++部分回答不好,而且面试官都是问了解什么什么吗,我都是回答了解,然后没有深入给他讲解

一面

  • 所有左叶子节点的和
  • m个n大小的有序数组求并集,一开始是2路归并,求时间复杂度,后来在面试官提醒直接m路归并,求时间复杂度
  • static关键字,还有其他关键字吗
  • hash表设计,线程安全?
  • 线程自己独享什么
  • 网络编程过程
  • select、epoll
  • 看什么书

创梦天地

创梦天地的面试难度不是很高,给的薪水也不高

一面

  • 实习项目
  • 项目的微信支付怎么用的
  • redis用了什么功能(session,排行榜)
  • 排行榜怎么实现
  • 实习用了jenkins吗
  • 除了简历的项目还有其他经历吗
  • 有什么问题吗

二面

  • redis
  • 笔试题中的场景题

HR面

  • 瞎扯,期望薪资什么的

趣丸

趣丸的面试难度堪比bat,但是薪水偏低了

一面

  • 为什么选pg
  • go的new和make区别
  • go怎么从源码编译到二进制文件
  • go的调度模型
  • go的锁如何实现,用了什么cpu指令
  • go的runtime如何实现
  • 看过sql的连接池实现吗,没有
  • 最近学什么新技术?c++简单网络库

二面

  • c++的map和go的map的区别(红黑树和hashtable)
  • ctx包了解吗?有什么用?
  • go什么情况下会发生内存泄漏?(他说ctx没有cancel的时候,这个真不知道)
  • 怎么实现协程完美退出?
  • 智力题:1000瓶酒中有1瓶毒酒,10只老鼠,7天后毒性才发作,第8天要卖了,怎么求那瓶毒酒?
  • 简单dp题,n*n矩阵从左上角到右下角有多少种走法(只限往下和往右走)

HR面

  • 瞎扯

映客直播

映客是京东开奖那段时间投的补招,他们公司用的golang也挺多,可惜也是北京,薪水比京东好一点

一面

  • 面经丢失

二面

  • 实习项目
  • 用channel实现定时器?(实际上是两个协程同步)
  • channel的实现?不了解
  • go为什么高并发好?讲了go的调度模型
  • git回滚
  • 看什么书,怎么学习
  • redis的zset用什么实现,除了跳跃表
  • 操作系统内存管理?进程通讯,为什么共享存储区效率最高
  • http的状态码
  • tcp和udp
  • udp的头部
  • http和tcp的关系

三面

  • 怎么看一本书?
  • 如果团队有一个人的任务做不完,你也很忙,你会怎么做?

Ucloud

Ucloud是做服务器的,跟七牛云很像,但Ucloud主要是C++,七牛云主要是golang。一面完说通过,约二面,后面说那周深圳的总监没空,调下周,后面没消息,估计凉凉了

一面

  • 实现一个hashmap,解决hash冲突的方法,解决hash倾斜的方法
  • c++的模板跟go的interface的区别
  • 怎么理解go的interface
  • 100亿个数选top5,小根堆

字节跳动

头条很早就笔试了,A了一道多,刚好赶上补招,给面试,拖了几周担心拖不了就面试了,面试中也有一些不会的,不过三面后加hr微信问过没过,hr说过了,第二天跟我联系,然后就担心没有部门捞(头条三面通过要有部门要才有offer),第二天就谈薪资收到offer了

一面

  • go代码运行结果(闭包函数)
  • git和svn区别,模型
  • 唯一订单号问题,并发量高的话怎么解决
  • hash表设计要注意什么问题
  • 数组和为n的数组对
  • 最大连续子数组和
  • redis容灾,备份,扩容
  • 跳跃表,为什么使用跳跃表而不使用红黑树

二面

  • 输入url后涉及什么
  • tcp怎么找到哪个套接字
  • ipc方式,共享存储区原理
  • 进程虚拟空间布局
  • 进程状态转换
  • 线程的栈在哪里分配
  • 多个线程读,一个线程写一个int32会不会有问题,int64呢(这里面试官后来说了要看数据总线的位数,32位的话写int32没问题,int64就有问题)
  • 判断二叉树是否为满二叉树
  • lru实现
  • 一个大整数(字符串形式表示的),移动字符求比它大的数中最小的

三面

  • MVC优点
  • 点赞系统设计

资源

博客

书籍

  • 高性能mysql
  • redis设计与实现
  • Linux/UNIX系统编程手册
  • Linux高性能服务器编程
  • UNIX网络编程
  • UNIX环境高级编程
  • 编程之法:面试和算法心得
  • 剑指offer
  • 图解http(简洁易懂)
  • TCP/IP详解
#面经##小米##广州视源电子科技股份有限公司##点触科技##欢聚集团##Go#
全部评论
厉害厉害😁
点赞 回复 分享
发布于 2018-11-27 18:08
m
点赞 回复 分享
发布于 2018-11-27 18:52
楼主头条什么部门啊,我要去搜索部,也是偏向go写引擎方面的(话说你的review真快,我三面后等了两周,还是在已经有部门明确要我的情况下)
点赞 回复 分享
发布于 2018-11-27 19:04
看来lz比较厉害,我面的时候因为基本只会go被直接挂了一片
点赞 回复 分享
发布于 2018-11-27 19:48
厉害了小老弟
点赞 回复 分享
发布于 2018-11-27 22:55
哇这么多,谢谢楼主,楼主好人。我最近也在看go,可以说是很需要了
点赞 回复 分享
发布于 2018-11-27 23:39
毕业半年了猜才想搞 GO 是不是不好找工作了感觉
点赞 回复 分享
发布于 2018-12-10 16:18
楼主go主要看了什么书?
点赞 回复 分享
发布于 2019-01-21 16:16
楼主是ee还是ies?
点赞 回复 分享
发布于 2019-11-09 21:00
感谢楼主!!
点赞 回复 分享
发布于 2019-12-30 16:48
请问楼主,头条面试算法是在什么算法上?
点赞 回复 分享
发布于 2020-01-06 13:50
go后端没啥书啊有推荐吗
点赞 回复 分享
发布于 2020-02-29 21:05
楼主,现在我没有后端项目,只有前端经历,怎么补呢?也是打算走Golang这条路
点赞 回复 分享
发布于 2020-03-18 09:32
lz在哪找的实习机会呀
点赞 回复 分享
发布于 2020-07-20 09:07
可以问下楼主现在薪资吗,还有楼主是本科毕业还是硕士毕业。
点赞 回复 分享
发布于 2020-07-20 15:25
楼主go做了一些项目吗
点赞 回复 分享
发布于 2021-01-13 01:10
楼主工作了多久了
点赞 回复 分享
发布于 2021-02-04 20:59
用户中心招聘岗位 北京: 服务端 - 实习: https://jobs.toutiao.com/s/eRCTyCk - 校招 目前已结束,可以使用实习链接,备注“用户中心-校招” https://jobs.toutiao.com/s/eRXm7mc 测试(请备注内推用户中心) https://job.toutiao.com/s/eRXCMQr - 实习: https://job.toutiao.com/s/eRXD2s8 深圳: “通用”表示所有部门都可以投,会优先内推人部门,可以加备注“用户中心” 服务端 - 实习: 投递链接: https://jobs.toutiao.com/s/eRXuFPb - 校招: 目前已结束,可以使用实习链接,备注“用户中心-校招” 投递链接: https://jobs.toutiao.com/s/eRXXxEL 广州: “通用”表示所有部门都可以投,会优先内推人部门,可以加备注“用户中心” 服务端 - 社招: https://job.toutiao.com/s/eRXVXmm(通用) 硅谷 - 社招: https://job.toutiao.com/s/eRXy2Jj Generic https://job.toutiao.com/s/eRXDrGo Lead
点赞 回复 分享
发布于 2021-03-11 22:32
太猛了xd
点赞 回复 分享
发布于 2021-07-20 21:01
大佬太强了
点赞 回复 分享
发布于 2021-07-21 17:47

相关推荐

今天 11:40
已编辑
电子科技大学 Java
【更新】一面过感觉要寄,发个面经攒攒人品。整体面试体验非常好,一点八股没问,全程面试官有引导回答,不过也可能因为我是Java,公司内部是go所以没问什么八股。先聊项目,先让讲讲项目里觉得最有意思的部分,然后面试官根据项目深挖,这里就不说了,跟项目强相关。问了个高并发怎么处理,问了个不同任务怎么隔离不相互影响。然后是Linux的使用,问了最常用的命令,然后出了个需求:一个文件夹大量文件,根据文件内容重命名文件,问这里应该怎么处理。我一开始想的用shell里面的管道一套流程处理。然后提到文件名可能不在第一行,那可能用shell就比较复杂,改为用Python脚本处理。然后说如何并行修改(如果文件非常非常多)?这里没答出来,然后说假设可以并行了,怎么保证同名文件要处理,不相互覆盖。这里我答的操作前备份+加锁处理。    上面并行的问题正确答案应该是shell并行用&符号,或者用parallel这类的工具。最后是一个算法,用均匀的rand7产生均匀的rand10,这里一开始没写出来,提醒之后实现了标准版本(leetcode 470),但是这样每次生成有9/49的概率生成失败重新循环,面试官希望进一步增加效率,理论上可以趋近100%的生成成功率应该怎么做。面试官提醒可以增大分母,生成失败的可能性的分子是固定的最大不超过9,那么我只要多次调用rand7,去生成一个很大的数,这样失败的概率就是9/∞。总之问题很有引导性也很有针对性,并且没问八股,真考思维,手撕题,感觉很舒服同时又很难。
查看9道真题和解析
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-19 16:39
点赞 评论 收藏
分享
60 682 评论
分享
牛客网
牛客企业服务