【2021校招】猿辅导客户端 笔经+面经

个人背景

本科非科班,硕士软件工程,无实习,无论文,客户端零基础,编程语言只了解C/C++。8月28日收到猿辅导意向书,在牛客网上受益颇多,特来回馈。

笔试(8 月1日)

笔试时间90分钟,15道选择题,3道编程题
选择题不能切换浏览器界面,编程题可以切出来在本地IDE调试
笔试过程中电脑录屏,手机扫码打开笔试助手,手机不能锁屏和切换界面

选择题

1.两个线程以相同的顺序加锁解锁,哪个顺序可能死锁
Lock(m1) Lock(m2) Unlock(m1) Lock(m1) Unlock(m2) Unlock(m1)
2.数据库SQL语句,查询在表table1不在table2的id,  left outer join
3.下面程序输出
int fun1(int i) {
if(i < 10)
return i;
return ((5*fun1(i - 1) + 2*fun1(i - 2)+fun1(i-3) + fun1(i-4))& 0x5fff);
}
int fun2(unsigned int i) {
unsigned int f = 2020;
return (f&i)/2;
}
int main() {
int n = fun2(fun1(101)) % 4;
printf("%d\n", n);
return 0;
}
4.前序遍历和中序遍历相反,问树的特征
5.出栈入栈顺序判断
6.下列哪些网络协议属于同一层
7.逻辑推理题
8.40个小朋友买票,票价5元,30个小朋友每人有一张5元,10个小朋友每人有一张10元,每个人买自己的票,售票处初始没有零钱。问不用等找零的概率。
9.两个人抛硬币,谁先抛到正面谁赢,问某个人赢的概率
10.给个排序部分过程,让判断用的是哪种排序算法

顺序不对,还有5道题记不清了

编程题

1.类似leetcode 732,应该是考线段树、树状数组,我用map将坐标离散化也能AC

2.分彩票,n张彩票,n个人,每张彩票有一定的奖励值,某个人一开始有所有的彩票,然后自己留一张,分给别人一部分,不一定每人一张,后面没人将多出来的再分给其他人。某个人的奖励值是自己手中的彩票和其他的一部分,选择其他部分有要求。这个比较复杂,就是如果A把票分给B,B再分给C的话,A可以选择A的奖励值,也可以选择A+B的奖励值,也可以A+B+C,但不能选A+C,因为B分给C,不选B的话,也不能选B分发的所有部分
第一行一个数n,后面第2行道第n+1行中每行有两个数,A和B,A表示自己手中彩票奖励值,B表示自己的彩票是从第几行分过来的,0表示最开始的那个人。
例如
3
2 0
1 2
-1 2
第2行的那个人为A,第3行的那个人为B,第4行的那个人为D,彩票最开始在A手中,然后A分给B和C,所以A可以选A,A+B,A+C,A+B+C,最大值为2+1=3,最大值不一定非得在A处获得。
思路:根据分发过程建树,树形dp

3.题都没看完。。。

笔试总结

猿辅导笔试难度不小,题的质量很高,知识点覆盖较广,且均为主流知识点,考察方式灵活,且今年的题与去年的题风格保持一致,往年试题具有较***价值。
编程题挺难的,经过这次笔试,觉得自己编程基本功有待提高,第2题看完题之后5分钟就有了思路,但是在实现建树的时候花了太久的时间,导致第3题都没时间看了。

一面(8月8日)

自我介绍+项目相关
C/C++语言
1.extern C
2.const
const int *p     int * const p
3.虚函数、虚表、纯虚函数、虚析构函数

网络
4.各层网络协议
5.tcp/ip协议
6.tcp 接收窗口
7.http返回码

编程题
8.翻转链表,从第i个位置到第j个位置(i,j都可能越界)
思路:直接模拟,先找到起点,从起点开始翻转,到终点结束
9.二叉搜索树,找出两个节点差值的绝对值最小值
思路:中序遍历,计算相邻位置的差,我用的非递归中序遍历
反问

二面(8月14日)

自我介绍
基础知识
1. .进程调度策略
先来先服务、短作业优先、高响应比优先
多级队列反馈问了一下细节
2.锁的分类了解(不会)
乐观锁、悲观锁、公平锁、非公平锁、可重入锁
3.死锁举个例子
4.数据库事务的理解
编程题
1.使用创建好的单链表实现队列,实现两个方法,入队和出队
思路:在链表上记录队首和队尾,根据出队和入队滑动队首和队尾,注意循环队列情况,
加问:队列为空,出队怎么返回,我一开始说返回-1,后来说改成抛异常,但我不会用,面试官说可以了,知道抛异常就行,不会写没关系。
2.二叉树中所有节点值为正,给定target,求出从根节点开始的路径中,路径和大于等于target的情况中,找出最小的路径和,路径终点可以不到叶子节点,返回最小路径和,找不到满足条件的路径,返回0;
要求:不准用全局变量,不调用用其他函数;
思路:自身递归,满足条件返回,否则递归左右子树,找出子树中最小路径和,返回根节点值+左右子树中结果最小的那个。
加问:全局变量有什么风险,这是额外问题,不影响面试。
反问

三面(8月23日)

1.自我介绍
2.项目相关

基础知识
3.虚拟内存,为什么提供隔离和保护,为什么要有页表和页目录表,
4.堆和栈的区别,为什么要分成堆和栈?
5.智能指针说一下,shared_ptr和unique_ptr如何实现?
6.fork()父进程和子进程的地址空间的区别
编程题
7.蛇形有序矩阵N*M,第一行升序,第二行降序,第三行升序,每一行的最小值都要比上一行的最大值大,在矩阵中查找target是否存在。
思路:将矩阵坐标映射为有序数组索引,在有序数组中二分查找
8.1TB数据排序思路,说了一下分段排序,然后用堆合并
编程:合并K个有序数组
思路:用堆记录每个数组的当前最小值

面试总结

面试基础知识问的比较深入,感觉猿辅导比较重视基础吧,每次面试都有两道编程题,我编程题做的十分细致,没有被挑出毛病

#面经##校招##猿辅导##C++工程师#
全部评论
校招现在结束了吗
点赞 回复
分享
发布于 2020-09-03 23:45
感谢同学的分享!邀请你参加秋招面经征集活动,把面经链接放到该专场下面,就有机会领奖品哟~ 活动详情:https://www.nowcoder.com/discuss/445455
点赞 回复
分享
发布于 2020-09-04 20:14
联想
校招火热招聘中
官网直投
厉害了, 这机试题挺难的, 难得楼主非科班都能A的出
点赞 回复
分享
发布于 2020-09-06 08:00
大佬太厉害了!刷了多少道题?
点赞 回复
分享
发布于 2020-09-07 22:10
楼主哪个所得
点赞 回复
分享
发布于 2020-09-11 16:57

相关推荐

岗位:阿里巴巴-高德-杭州-信息工程-Java后端笔试:3月14日,AK一面:3月20日,面的不错二面:3月26日,面的不错HR面:4月1日,等待一个OC,求你了德子OC:4月2日,发了意向,约了4月25日入职---------------------------------------一面:一个温柔的女面试官,问了一下我在美团智能助手RAG。提了一个她们现在业务中遇到的场景:如何根据海量语音聊天对话记录,分析特定问题的结论。例如给出保险销售代表和客户语音电话记录,如何用ChatGPT从日志中准确识别“用户是否想买保险”,“买哪个保险产品”。我提出了一种分治+局部意图分组+多级索引的策略。面试官觉得答得比较底层,看得出来挺满意的。又问了另一个场景题,智能助手回答问题时效性如何保证,我给出的策略是提高粗排和精排的阈值,减少召回日志数。如果因为高阈值导致没有召回结果,再根据用户意图匹配兜底回复,并用日志记录下本次失败消息。接下来聊了聊领域驱动设计,如何战略设计,如何划分实体和聚合根,限界上下文边界如何划分。美团的项目里是怎么做的。最后问了问我是怎么学习新领域知识的(我给他看了我手机上总结的800多道八股文的题)。反问:为啥不问我八股文不给个算法题,她说觉得我本科成绩好,笔试成绩不错,就不问了。二面:一个沉默的中年男性,感觉像高p。问快速排序的原理,最好和最坏的时间的case,如何优化避免最坏情况。问常见的JUC类,HashMap和ConcurrentHashMap,LongAdder对CAS的优化,AQS原理,双向链表的插入和删除,如何设计一个高并发的双向链表(答了如果要求最终一致性用写时复制,就像CopyOnWriteArrayList。如果追求强一致性用synchronized,如ConcurrentHashMap)。然后问了一下ThreadLocal原理。问我StackOverflow出现场景,和OOM的区别。如何排查OOM(答了看gc.log,用jmap或JVM启动参数保存堆转储文件,Mat分析,顺便答了一下JVM调优年轻代和老年代的策略,内存泄露的场景,回答模式用的美团的SOP)。最后问了领域驱动设计,如何写出高质量代码。
点赞 评论 收藏
转发
7 56 评论
分享
牛客网
牛客企业服务