Vivo提前批笔试及面试复盘
首先是笔试
时间60分钟,三道编程题,不允许跳出网页使用本地编译器,只能在网页上编辑。
第一次不能使用编译器,感觉暴露了很多问题:
- 首先是一些不常用的方法名可以记得不是很清楚,原来都是依赖于代码提示的;
- 其次是类包需要自己导入,平时都是编译器自动导入的,路径可能记得不清楚,回忆,试错或者是找人帮忙都很浪费时间,在时间本来就很紧张的情况下;
- 代码调试的时候也没有在本地调试方便,不能设置断点单步调试,只能提交看结果。(不知道是不是我使用有问题,我为了查错,很复杂的打印了很多的日志)
- 这暴露出了自己代码不扎实的问题,很多东西掌握的不牢靠。
接下来是三道题目:
-
第一题是,两个数组,要求找出在数组一种存在,但是数组二中不存在的数,并按照顺序输出。
很简单,可以使用暴力,我使用的是辅助空间法,用数组二的数当下标存元素1,然后数组一依次查询这个表后输出。不过辅助数组的大小是个问题,题目没有给出数的范围。我大胆的设了500,因为感觉考察的这个题目设的数字太大了没有必要。 -
第二题是链表题,要求将排在倒数第N和倒数第M的节点置换过来。
也不难,我是先遍历了一遍看了下长度,然后计算出两个节点的正序位置,然后第二次遍历,进行交换(设一个辅助的节点temp)但是这个题目一直有个小bug卡了好久。因为不习惯网页编程费了不少时间。 -
第三题就是贪心算法+动态规划,具体题目忘了,可以参考01背包的小偷偷东西问题。
然后是面试环节:
一面,技术面:
- 上来先是自我介绍
- Java的内存管理,堆区和栈区放什么?举了个例子 Person one = new