赞
踩
之前很多同学嚷嚷有没有社招经验,正好,我有个朋友去腾讯社招面试了。
他的面的是全栈开发岗位,工作两年,后端是Go,前端是 JavaScript + Vue。
因为工作也没多久,就两年时间,所以大概率可能还是一半考察业务,一半考察基础,事实证明,基础占六成,业务占四成,其中业务就是自己在工作中的具体业务,基础则就是校招那些东西,编程语言、操作系统、计算机网络、数据库(MySQL + Redis)、算法等。
大概是三月份的时候就断断续续开始找一些机会,其实去年 11-12 月份的时候他就刷过一些算法题,当时就想着找找感觉,刷了小 10 天就没再继续刷了。
而在今年一月份的时候他就开始在力扣上重新刷题了,一直断断续续的刷,总共加起来 200+ 道题是有了。
对接触一线业务的后端程序员来说,第一次跳槽,那么编程语言、计算机网络、数据库、操作系统四大块是一定绕不开的,这四块是最基本的根基所在,系统和网络还好,数据库绝对是考察重点,在此之上才是一些其余的分布式、微服务架构、服务治理等。
最后再在面试中补充你自己对工作项目的思考,聊聊你的业务,所负责的模块,前期做的一些市场调研,以及与同行的方案对比,你的创新点或者说优越点在哪里。
其实工作久了的人就会知道:编程语言不重要,重要的是业务,这句话有多么的对。
鹅厂一面是个小哥,应该是做后端的,基本围绕着Go和计算机基础来问,面试时间很长,差不多一个半小时了,前端基本没问。
1、看你自我介绍是写全栈的?前端技术如何?
答:工作中自学的前端,会写一点,不算很好,基本够用的水平
2、前端开发过程中有遇到什么自己觉得难搞的点吗?
答:有,有一个功能印象较深,开发实现了url页面分享的功能,这个在我们开发时市面上还没有很好的例子,并且在内网分享会上写了文章进行分享。
哦,那挺好的,那我们聊些后端吧
3、Go 里面使用 Map 时应注意问题和数据结构?
答:可以通过定义 value 为 struct 来节约内存;哈希分桶的结构,用哈希值的高八位和低八位分别来做桶内定位的依据和分桶的依据等;
4、Map 扩容的细节可以说一下吗?
答:这个《Go 语言底层原理剖析》这本书里有,不展开,其实跟 Redis 中渐进式 rehash 的思路差不多;
5、Rehash 过程中存放在旧桶的元素如何迁移?
答:见2
6、sync.Map 比加锁的方案好在哪里?底层数据结构?
答:缓存 + map 组成的结构;底层 map 实际依然是加锁的,但是读的时候加上缓存可以增加并发性能;
7、如果有这样一个场景,在并发环境想要用哈希容器,你会采用哪些方案?
答:sync.Mutex / sync.RWMutex或者sync.Map
8、还是上面那个场景,并发环境共享同一个 map 可以吗?
答:不可以,可能会panic
9、channel 知道吧,他的底层数据结构大致说说?
答:见2,不赘述
10、mysql中的事务?
答:事务是一组操作单元,要么全部执行成功,要么全部执行失败,不存在第三种情况,主要用来保证数据库一致性。
事务具有四个特性:ACID
原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部执行失败,不会出现部分执行的情况。
一致性(Consistency):事务执行前后数据库的状态是一致的,即数据库中的约束和规则都得到了保持。
隔离性(Isolation):多个事务并发执行时,相互之间不会影响彼此的执行结果。
持久性(Durability):事务执行完成后,对数据库所作的修改将被永久保存到数据库中。
11、索引什么时候下会失效?可以举个例子吗?
答:场景很多,比如一次性查询超过全表40%以上的数据,gorm框架里自带一个model结构,其中有create_time字段,如果我按照 create_time 去做范围查询,查询1970-2021年间的数据,那么索引就形同虚设了,因为走的是全表扫描;
12、写个SQL吧,求一个商品表中价格最高的第10和第14个产品?
答:使用limit关键字
13、有写过查询时间很慢的接口吗?最后有查到原因吗?
答:有,写过,入职没多久的时候遇到过这个问题,好像是刚入职一个月左右。
最开始以为是SQL写的不行,直接用explain看了一下发现没什么大问题,索引也用上了,后来排查下来发现是缓存没加上。。。每次取数后忘记回表了,这样每次都走的DB,redis根本没用上,所以导致每次都很慢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。