一面 45mins
- 平时怎么学习的
- 看过哪些书
- 谈谈你对 HTTP 的理解
- HTTP 的状态码
- 你自己有接触过 304 的案例吗?介绍缓存机制
- Get Post 的区别
- 写 HTTP GET 报文
算法题:
- 无序数组,求数组里第 K 大的数。这是《剑指offer》原题,我用快排的方法做的,但细节比较多,实际上用堆更简单
- 给定若干面值的硬币,每种硬币无数个,求凑够一个给定金额的数量最少的方案。完全背包问题,恰好装满。但是这个没想起状态转移公式来,不会做
面试官没有反问环节,直接走了。我一度以为自己挂了。
二面 隔一周 1h
- 实习学到了什么
- golang 和传统语言的最大区别
- 协程和线程的区别
- 用户态和内核态区别
- 协程的调度是怎么做的
- 进程的概念
- 进程通信的方式
- 管道在哪些场景会用到
- golang 的协程如何传递信息
- channel 的约束条件是什么?是为了保证安全吗?(安全 & 避免锁竞争)
- channel 和互斥锁、读写锁在什么场景用更合适
- 对互斥锁的了解
算法题:
- 32 位整数翻转,如果溢出,返回 -1。机器最多支持 32 位,不能用 long long
- 滑动窗口最大值。LeetCode 原题,使用单调队列就行。但是我又没做出来
三面 隔一天 45mins
- 实习的主要的技术难点
- 自己的开源项目介绍、大概多少代码、用到的技术介绍、项目有什么难点
- 介绍几个用到的 golang 的语言特点
- 介绍一下 channel 和协程
- 实习经历中哪些场景用到了 channel 和协程
算法:二叉搜索树,根据前序遍历序列,输出中序遍历。要求时间复杂度 O(N)。我做出来 O(nlogn) 的,但是这跟直接排序也没什么区别。这道题类似于 LeetCode 1008 题,有 O(N) 的做法。
总结
猿辅导的面试一般都是 15mins 项目/基础 + 30mins 做题(1~2道),三轮面试一共做 5 道题。
作为校招生,基础知识、算法能力、实习经历,只要有一方面是亮点,那机会就很大,其他的要不是太差、平均水平就好。我认为自己算法做的很一般,算法还占整个面试时长的 2/3,但也进入沟通 offer 状态,也许是基础问题答得比较好、经历比较丰富的缘故吧。
我的建议是:好好复习基础知识,多多总结 / 回顾自己面试中遇到的不会的问题,查漏补缺。我认为光看他人总结的面经和答案,是远远不够的,那只能用于面试前的冲刺,适合瞄一眼临时看。最合适的答案,还是要靠自己总结出来,这样才能印象更深,也能有更深入的理解。
全部评论
(10) 回帖