瓜子二手车网面经(已通过)
应该算是第一个拿到offer的公司吧,感觉面试上比较简单,不过和之前的面试不太一样。
23号宣讲会现场笔试的,15道填空题,全部不涉及到语言的,算法和智力题一半一半吧。比如稳定的排序算法有哪些,重建最小堆要经过多少次比较等等。智力题的话找规律什么的具体不太记得了。反正当时答完觉得心里没底,没想到回去不久就接到电话第二天现场面试。
面试一共2轮。第一轮应该是昨天来宣讲的技术总监面的。人很nice,不过一上来就是怼算法题。题目如下
1.链表判断是否有环和找入环的节点。
这个很简单的原题了,快慢指针即可。写完了代码问了下哪里比较容易出错,当时答的容易出现空指针什么的。
2.一个数组有一个数字超过了一半,找到这个数字。
当时回答的是排序然后取数组中间的值,复杂度应该是o(nlogn)。后来问了有没有o(n)的方法。提示从动态规划的角度入手。没有想出来。回去想了下可以计算元素个数就行了,也是o(n),不过动态规划的算法依旧没有想出来。
3.一共一百个人,有一个人是明星不认识其他人,但是所有人都认识他,其余的人互相可能认识也可能不认识。已知有且仅有一个明星,找到这个明星。每次只能问一个人你认不认识某个人。
大概意思是这样 比如A是明星,则他不认识其余所有人,其余所有人认识他。其余人比如B,一定认识A,且一定有人不认识B
首先想到的是暴力法,问A你认不认识B、C、D。。。。这个样子,然后从他认识的人里面依次类推,找到一个谁都不认识的就是明星。
后面提示还是用动态规划的思想。2个人要问几次啊,3个人要问几次啊。得到一个o(n)的算法
问A认不认识B,此时有两个情况
A认识B,则A不是明星,去除A
A不认识B,则B不是明星,去除B
之后一次类推即可
差不多就这三道算法,然后就随便聊了下,当时我问他你们这边招java也都问得算法什么的和其他家不太一样。他说的是想看看学习和思考能力,其余的其实进来都可以学。
第二轮一上来还是怼算法
如何用两个栈实现队列
基本思想是在入栈或出栈的时候整理成队列,不过后面问有没有不需要全部倒出来的算法,没想出来
之后就问了下java基础的 jvm模型 gc volite原理 hashmap什么的,比较基础了
总题感想觉得面试官人很nice,也确实不管是常见不常见的算法题都能学到一些新的东西。尤其一面说的进来都可以学我觉得真的是很少见这样的了。感觉是一个很注重学习能力的公司。大概就是这样了。27号收到邮件通知面试通过,等待HR沟通具体offer情况。