「字节跳动Golang面试」笔试4道题,ac了2
时间有一些久了,只能回忆起一些大概。技术面试总共是2~3轮视频面试(我在第三轮时闯关失败,当时本以为胜券在握,最后还是大意了)。七牛云面试官面试时,既考察基础知识和能力,也注重实战经验,尤其关注存储方面的技术,比如MySql索引,Redis应用以及主从数据同步等方面。第一轮面试时,面试官了解到我有C++的背景,在考察Golang的同时也问了些C++的问题。后来他问了一个并发分布式事务的数据一致性问题,把我难住了,问的是并发对一个MySql数据库字段进行自增时,如何确保数据自增成功。我回答说,用事务可以保证。他又问如果在最后commit的时候发生了超时(比如因为网络问题,Server端没有正常返回),这时候如何确保数据一致性。因为分布式的经验欠缺,没能打上来。面试官比较耐心,会和你进行讨论,循循善诱。当然,面试离不开现场编程,后面出了一道题目让我现场写一个可以进行并发数控制的struct简单实现,类似于ratelimit。等了几天之后,安排第二轮技术面试,仍然是先问答,然后现场编程。自己对于hash部分的基础知识有些薄弱,所以当被问到如何写一个hash函数的时候被问倒了(惭愧)。现场编程的题目是关于LRU的简单Golang实现,并且能在幸运的是,后来竟然还安排了第三面。第三位面试官很和蔼,当我问到他七牛云大概有多少代码量的时候,他热心的帮我大概统计了下。面试官当时问倒我的问题是,描述下用redis给MySQL提供缓存功能应该如何实现,并且如何保证数据一致性的问题。我完全答错了,事后想想对于自己不确定的方面,面试时还是要仔细斟酌再回答,不能想当然。总体来说,还是非常好的一次面试体验,给七牛云赞一个。