9.17 华为软开面试
17号去面的华为,应该是最早的一批,8点半的,所以我后来迟到一会快9点到的时候,签到的小姐姐们都还在签8点半的,让后面时间的都去休息室等,所以还是蛮幸运的,我签到了一会就直接面试了。一面面试官比较温和,就是上来就问了我Java的反射机制,以及哪些用到了反射。然后就是一些项目的问题,都没有太怼我。问我怎么去构建一个树,我当时说那就先建结点,然后就直接让我写答题纸上了,后面又让我写前序遍历,也写了。中间还问到说Java的集合类,String和StringBuilder和StringBuffer之间的区别。
最后是一道算法题,一个未排序的数组,然后有正有负,让你找出里面没有出现的最小的正整数,然后要求是时间O(n),空间复杂度是O(1)级别的。 比如说,给你0,1,2,答案是3;比如说3,4,5,6,答案是1。比如1,-1,3,4,7,这样的,答案就是2。
中间可能还有别的问题,但是想不起来了,想起来再来加。 面完以后本来以为可能直接凉了,但是面试官人很好地让我去等下一面。
二面:在休息室里等了大概半个小时吧,好像是酒店网不太好,就直接有部门产品线的负责人吧,直接就带着我们去了面试间,见到有空着的面试官就让去面试。当时带着我们的小姐姐问是不是面开发,面试官说是,小姐姐就直接让我坐下来面试了。聊了一会之后发现,面试官是面c和c++的,而我c++忘得一干二净,于是面试官说我给你找个面Java的,就侧着身子看到旁边一个面试官刚好空着,就问了问让我过去了。
新的面试官稍微有点严肃,自我介绍完以后就开始怼着项目问,然后我就发现我好像对自己项目的一些知识是真的没了解过,比如servlet的生命周期,然后preStatement有什么优点,get和post的区别,什么时候用get什么时候用post呢,还有啥不记得了。然后是转问Java,别的也是记不太清楚了,问的一个Integer和int,然后写了一个Integer a = new Integer(100), Integer b = new Integer(100), ab (这个是true),Integer a2= new Integer(200), Integer b2 = new Integer(200), a2b2(这个是false)。但是一开始我答错了,我只是隐约记得好像值比较小的时候,Integer的对象会是固定的,但是当时没敢说,后来问面试官这俩有啥区别,他说第一个true第二个false。然后我就解释了一下我记得的那部分,后来又去请教面试官,他说你既然都知道之前为什么不说,我说我只记得是较小的值,确实不太记得是哪个范围。后来翻书书上是这么写的:自动装箱规范要求boolean,byte,char<=127, 介于-128到127之间的short和int被包装到固定对象中,所以int为100的无论new多少次都是相等的。
最后是一个算法题:还蛮简单的,一个无序数组,要求将奇数排左边,偶数排右边。要求O(1)的空间复杂度,O(n)的时间复杂度,用两个指针就行了,写完给面试官看的时候可能他没听明白,于是他画了个图让我走给他看。最后就让我等下一面了。
暂时好像就是这些,三面是业务主管面,这个我本来以为没啥的,也是怼着项目问了好些,但是也没有很为难人,就让我给他讲清楚怎么实现的。然后就是一些聊天。最后我问他如果要加入他的部门的话,我需要在学些什么,他说了很多,重点就是说语言这个是一定要自己多练,别的公司都会培养,但只有语言是自己会的之类,能专通一门固然是可以的,但是多掌握一些也会很好。
然后就是回去等消息了,两三天过去了,而我官网还没有录用排序。哎,据说是性格测评挂了,可是我是春天找实习的时候做的啊,后来也没有让我重测,就很难受,只能等着了。
后续:
9.30号收到的进offer审批池短信。