腾讯天美工作室-后台开发实习面经
自我介绍
自己常用Go语言,可能是谈到了自学相关内容,面试官继续询问自学了哪些课程
面试官强调部门做游戏,所以比较常用C/C++;询问我是否会C/C++,我说了下自己在看Redis的文章的时候简单看过C(埋坑)
手撕
- 实现 void *memcpy ( void * dest, const void * src, size_t num ) 内存拷贝函数,C的源码,直接不会
- 寻找链表的倒数第k个节点,5分钟手撕
网络
TCP和UDP的区别
- TCP面向连接的传输层服务
- UDP不可靠,用于能够容忍丢包的应用中
TCP为什么需要三次握手,交换了什么信息
从通信角度来看:
- 第一次握手,客户端发送SYN报文到服务端,服务端收到报文后确认自己的接收能力正常,客户端的发送能力正常
- 第二次握手,服务端发送报文到客户端,客户端收到报文后知道自己的接收和发送能力没有问题,服务端的发送和接收能力都没有问题
- 第三次握手,客户端发送报文给服务端,服务端再次收到,就可以继续确认服务端自己的接收发送能力也是没有问题的,客户端的接收能力也没有问题
交换的信息:
TCP为了实现可靠传输,需要有重传控制的机制,所以需要初始化序号
操作系统
线程与进程
- 线程是CPU执行、CPU时间分配的基本单位
- 进程其他系统资源(内存),一系列的系统资源组成的集合
Linux创建线程的API
这个不会,pthread_create
说了进程创建的API:fork
进程间通信的方式
回答了两种...
- 共享内存
- 网络通信
可能会有信号、信号量
数据库
MySQL默认事务隔离级别
可重复读
MySQL默认的存储引擎
InnoDB
InnoDB索引的底层数据结构及其优点
- b+树
- 层级浅,效率高
- 叶子节点使用链表连接,范围查询搞笑
哪些存在MySQL,哪些存在Redis
数据安全性有要求存在MySQL
Redis,操作的缓冲
项目
在线白板
- 介绍业务;
- 并发控制:两个人同时操作同一个图形(图元锁)
Homi
- 为什么有了Redis要使用Mongo
闲聊
城市?考研?规划?
反问
- 语言C/C++,是否有趋势向Go发展(有但不多)
- 评价:实战经验丰富一些,基础、语言需要综合评估