商汤科技 后端开发一二三面面经
一面 7.19
- 讲一下项目1
- 讲一下项目1里面的某个算法实现
- 讲一下项目2,具体做了什么
- 讲一下项目2里面的算法实现(两个讲完了,因为我不是科班的,项目涉及本专业的理论知识,面试官表示大致理解)
- 项目里面提到了Qt,讲一下你学习类似Qt这样的工具或者新知识的过程
- 说一下你在项目中应用到的数据结构和算法
- 说一下你对动态规划的理解(运筹学、状态、转移、阶段等等)
- 讲一下你对多路复用的理解(围绕线程、阻塞、select、epoll等)
- 讲一下实习过程中你们的主要业务和技术栈
- 数据库索引和优化的理解(这里简单答了答,我说自己很少实操的经验,都是在理论上学习了以下,面试官没有细问)
- 反问
- 面试官介绍了部门和业务
tips:
- 面试官表示,因为我不是科班的,所以从宏观上对我理性考察,主要是学习能力和逻辑思维的考察
二面 7.27
- 说一下为什么转行
- 说一下项目
- 了解STL吗,说一下再STL中链表是如何实现的
- STL的六个组件都是哪些
- 线程和进程的区别
- 互斥是什么意思
- 你平时通过什么样的方式学习,有看一些源码之类的吗
- socket,TCP和UDP的区别
- TCP四次挥手
- MySQL索引,实习业务中有用到吗
- 联合查询,join,left join right join,一般的join是选取什么样的数据呢
- redis了解过吗,常用在什么场景中呢,他有什么特性可以应用于此
- redis IO的单线程处理模式是怎么满足高并发的需求的呢
- 说说你对epoll的理解吧
- 平时项目中有用到设计模式吗,说说你对单例模式的理解吧,还有哪些实现方式
- 看你实习部门有用到RabbitMQ,说一下你们业务是如何确保消息的正确执行的
- 做个题,环形链表的入口(说了O(n)空间的思路,上手写O(1)空间的代码)
- 你有什么问题问我的吗(问了部门业务,对我的建议)
- 为什么选择成都呢
- 你对算法的理解
tips:
- 面试官说语言不是问题,但是做后端的话,可能后续需要学习java、go,另外建议多阅读开源代码,比如Nginx之类的。面试过程问的问题比较多,也比较细,这里没有全部记录,面了整一个小时。面试官提出简历有地方写错了(极其尴尬),做题的过程也是全程沟通,一起debug(没有秒出来,思路正确),非常nice的体验。
三面 8.2
- 手写LRU
- 手写单例模式
- 返回局部静态变量会有什么问题吗
- 分析双验锁和普通的单例相比有什么区别
- TCP、UDP区别
- 微信聊天、传文件用的什么协议,为什么
- 如何让UDP实现可靠的连接
- IO多路复用的类型
- epoll的底层结构
- mysql索引优化
- mysql索引结构
- redis有哪些数据结构,redis和Kafka相比有什么优点,是由什么样的特性决定的(这里完全不知道)
- IO单线程的情况下,为什么redis还能保证并发量,底层的结构是什么
- 说下项目
- 说下实习业务
- 学习的方法方式
- 在哪里实习,会转正吗
- 投递base哪里,有考虑来深圳吗
- 设计分布式微服务(调度、优先级、管理队列、消息路由等等)
- 还有投递什么吗,为什么选择商汤
- 反问:您是在深圳吗,对我评价,我可以学习的着手点
tips:
- 没有好好准备,一些知识还很欠缺
求个HR面吧
#商汤科技##面经##校招##C++工程师#