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

栏目: Go · 发布时间: 5年前

只要活着,就不算是悲剧。我们尚在途中,今后仍要继续。——《火花》

戳 -> 校招-面经

我主要用的还是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优点

点赞系统设计

资源

博客

legendtkl:这个大佬写的博客挺有深度,主要也是go,可以看看

基础知识CyC2018:一些面试的基础知识

书籍

高性能mysql

redis设计与实现

Linux/UNIX系统编程手册

Linux高性能服务器编程

UNIX网络编程

UNIX环境高级编程

编程之法:面试和算法心得

剑指offer

图解http(简洁易懂)

TCP/IP详解

点击作者姓名与作者大佬交流~

作者:打代码啦啦啦

来源:牛客网(www.nowcoder.com)

- 互联网名企笔试真题

- 校招求职笔经&面经

- 程序员/产品/运营求职实习信息

- 程序员/产品/运营学习交流社区


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux内核设计与实现(原书第3版)

Linux内核设计与实现(原书第3版)

Robert Love / 陈莉君、康华 / 机械工业出版社华章公司 / 2011-4-30 / 69.00元

《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的设计与实现。内核代码的编写者、开发者以及程序开发人员都可以通过阅读本书受益,他们可以更好理解操作系统原理,并将其应用在自己的编码中以提高效率和生产率。 《Linux内核设计与实现(原书第3版)》详细描述了Linux内核的主要子系统和特点,包括Linux内核的设计、实现和接口。从理论到实践涵盖了Linux内核的方方面面,可以满......一起来看看 《Linux内核设计与实现(原书第3版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具