腾讯面试原题回顾(2020.07)
转载请注明公众号来源 和 作者
公众号:超级英雄吉姆(WaXiData)
技术交流群:696502307
最近吉姆面了一次腾讯重庆的全资子公司(新能源部),面试的语言是golang,面试的岗位是开发,我的开发经验是两年多,虽然失败了,但是总结一下面试题目,来年再来一次。
第一部分 - 自我介绍
面试的首要部分就是自我介绍,我的简历就不在这里公开说明,但是总的感觉下来,自我介绍是非常重要的部分,在这部分内容中,面试官会提取一些他觉得有价值或者他认为是你的长处的地方作为接下来的面试题。
第二部分 - MySql
对于MySql来说,应该是老生常谈的几部分。以下是大概的一些问题,面试官会延展你回答正确的问题,考察的是你对于基础和原理的理解深度
索引
- 普通索引和主键索引的区别
- 建立索引的方式
- 索引的类型,分别的特性
- (实践题)大概的意思是,如果有一张表,表内字段有a,b,c字段,这三个字段类型不一样,根据问题选择适合的索引,并说明为什么
数据库引擎
- InnoDB
- MyISAM
这部分回答的不好,所以没有延展问题,这里考察的东西主要是引擎特性和借助引擎优化sql效率
Redis
基础
- Redis 的数据结构有几种
- 数据结构的底层实现方式
- Redis集群的设计思想
延展问题
- 面试官可能会假设一种场景让你使用Redis实现。我遇到的问题是统计一段时间内的点赞人数。你说出结果后,会被问到为什么这样设计,这样设计的好处,有没有更好的办法
TCP
TCP这部分的知识应该是我这个年限的程序员还是会被问到的问题
- 了不了解time-wait
- 为什么需要time-wait
- 以上问题回答后,他补充问了如果按照我回答的答案,会不会服务端会出现大量的time-wait状态
- 四次挥手的详细解说
UDP
- UDP和TCP的区别
- TCP和UDP的优势,假设适用场景,为什么
进程间的通信
- RPC
- GPRC
- 管道
这了由于我对进程间的通讯不是很了解,所以没有更多的深入问题,面试时基本上问的是这几种的基础概念
GoLang
基础部分
- slice的append发生了什么
- len()和cap()
- RWMutex和Mutex的差别,原理
- 可不可以有RWMutex多把写锁
- 如果有在一个方法内声明一个变量,并且返回这个变量的指针,你觉得这样做有什么问题吗?
- 闭包
- go的GC
- 多个chan 对一个map操作会发生什么
- 如果有一个chan已经close了,对他进行读、写、和close程序会怎么执行(发生什么,返回什么,接下来怎么运行)
Golang 笔试(共两题)
第一题,原题已经忘了。这里给出伪代码。大概考察的是对slice的len()和cap()的考察
var s1 = := []int{0...,10}
print(len(s1),cap(s1))
var s2 = s1[:5]
print(len(s2),cap(s2))
var s3 = make({},10)
s3 = s2
print(len(s2),cap(s3))
第二题
写出打印结果,这个题主要考的是defer和指针,这个题可以用很多变种,可以自我思考一下
总结
总体来说,这次面试的东西比较基础,但是每一个基础问题都会有相应的延展问题,感觉这次面试对于mysql和redis准备得不够充分,对于golang的问题我比较自信,除了go的gc问题和chan问题回答有些不满之外,其他部分还是感觉回答得很好
我平时会在我的公众号分享一个面试和开发案例,希望大家关注一波~~~~~