自我介绍是面试的开场环节,要简洁明了地介绍自己的姓名、工作经验、擅长的技术领域以及个人优势。
离职原因要真诚且合理,可以从职业发展、个人成长、工作环境等方面来回答。
职业规划要体现出自己的目标和努力方向。例如:在短期内,我希望能够深入学习 Golang 的高级特性和优化技巧,提升自己的开发效率和代码质量。长期目标是能够带领团队,为公司的技术发展做出更大的贡献。
1. 自我介绍
2. 为什么离职
3. 会哪些语言
4. 职业规划
5. 对未来从事行业的看法
6. 实现一个 golang 版简易内存缓存
7. 遍历 map 的时候为什么不直接删除元素
8. map 的 value 使用指针和不使用指针有什么区别
9. map 中 key 可以使用的类型
10. go 的指针和 C/C++的区别
11. go 的并发模型
12. 说一下进程,线程,协程
13. 协程切换是在用户态还是内核态
14. channel 被关闭了,读和写有什么问题
15. 聊项目
番茄小说岗位,面试体验不太行,互动比较少,感觉压力很大番茄小说岗位,面试体验不太行,互动比较少,感觉压力很大番茄小说岗位,面试体验不太行,互动比较少,感觉压力很大
面试官问的面试题: 1.积分排名中的数据假如数据量很大,如何设计数据结构获取前100个数据?
2.socket编程
3.浏览器输入URL的过程
4.三次握手 四次挥手, 四次挥手中close_wait和time_wait
5.并发和并行的区别? 有三个程序,A:50MS, B:55;MS, C:60MS,在并发环境下,时间是多少?
6.select * fromxx limit 100, 100
select * fromxx limit 100000, 100 效率问题? 要是他们都有索引呢?
7.一个学校有多个班级、一个班级有很多同学,一个学生有多门课程,每门课程都有分数,百分制。
\- 能够查询一个班总分最高的学生。
\- 查询出一个年级单科最高分数是哪个学生。
设计出表并写出sql语句
8.给你一个二叉树,求出该树所有的左叶子节点之和?
9.有一个表,stu_id, class_id, name ,怎么建立索引? 我回答为stu_id和class_id简历索引,问:假如select* from table where class_id = ? 索引能命中吗?
10.如果没有time_wait会怎么样?怎么从内核解决这个问题?
9月份开始校园招聘,标准的校招流程,2次技术面+1次hr面,顺利拿到offer
所有面试都在广州大学城进行
一面:
基础知识:1.编码中有没遇到过野指针的情况(有,C++ class的深复制、浅复制)
2.关于C++异常的处理(答了构造函数中要注意捕捉异常的情况,若在构造函数中申请一块内存后,程序没有捕捉异常就结束,之前申请的内存是没有释放的)
操作系统:1.进程与线程的区别
Linux中进程与线程的结构是一致的(不知道现在新版本内核还是不是这样),只是线程通常只有自己的堆栈和寄存器,多个线程共享同一个进程的数据,同时线程切换的时间远小于进程切换的时间
2、怎么解决线程的竞争
锁、信号量
3.堆与栈的区别
堆通常由程序员分配、释放,系统不会自动释放,地址不一定是连续的(管理内存分配的数据结构是链表),堆的大小受限于计算机系统中有效的虚拟内存
栈由编译器分配、释放,用于存放函数参数、局部变量等,栈的最大容量是系统预先规定好的
两者地址增长的方向是相反的
数据结构:1.用hash、红黑树、b-tree、二叉搜索树做索引的区别(自己谈了一下不同数据结构做索引的优缺点、时间复杂度)
2.假设用户的ID都是大于0的int型整数,怎么快速提供用户的在线状态查询
简单的做法可以是用一个int的数组来记录用户的状态,以用户ID作为索引,用0/1表示用户的状态
假如有上千万的用户呢,如何减小内存的开销?
可以使用bitmap,使用一个bit表示用户的状态,内存使用减少了32倍(原来需要32bit来表示用户的状态)
网络: select和epoll的区别
二面
基础知识:1.C/C++中传值的方式(值传递,指针,引用) 2.struct的内存对齐
项目: 1.项目用到了哪些技术 2.服务最多支持多少并发(要做压测,了解自己写的程序的性能)
网络: 服务器的设计方案,不同方案的优缺点(一个客户端一个进程、一个客户端一个线程、异步IO……可以参考Unix网络编程)
算法:1.集合中的元素都是整数,求两个集合的交集 2.如果两个集合是有交集的,我们认为这两个集合是一类的,现有N个集合,求他们的所有的分类