一面
对异常有了解么,异常的分类,是不是所有的异常都需要try catch环绕(不是,例如NullPointerException之类的好像就不要)
MySQL索引,什么时候用索引,设置索引时应注意什么
JVM了解么,讲一下堆和栈
GC机制
讲一下笔试时题目的思路
做一下题。我的是一个带有数字、符号、大小写字母的字符串,去掉所有字母以外的字符,转为小写,然后判断是否是回文字符串。就先对字符串处理一下,去除数字符号什么的,然后转为小写,一个双指针算法就好了。
二面
问了下项目,我项目是Spring做的,所以也问了点SpringBoot的东东
然后还是问了下JVM的堆、栈、GC方面的问题(啊!!感谢JavaGuide的面经啊!!)
然后好像面试官场馆有点吵还是什么的,所以就没有问太多的问题,直接做题了。
题目一开始是个,N数之和的问题,就一个数组,里面元素不重复,元素可以重复使用,求利用数组中元素之和为target的组合,以链表的形式返回。
N数之和就是递归可以解决,唔,但是因为元素可以重复使用,所以有个去重的问题。面试官提醒了下,说是可以用剪枝的思路,所以我的想法是,例如递归的一层中,使用了第i个元素,target = target - nums[i],那么在下一层的递归中就只能使用数组中序号大于等于i的元素进行组合了。
这样能避免重复,但是我不确定能不能实现无遗漏哈。再加上这题需要递归中不断地链表拼接什么的,我只自己做过一次,把握不大,然后面试官问我是不是要很久,我就说把握不大,于是换了个题目。
然后就换了个:两个字符串形式的数字,求他们的乘积。不可使用字符串转数字,不允许使用decimal之类的东东(毕竟人家考察的就是字符串相乘,用了那个还考什么嘛)
那这个题就简单些了,两个多位数的乘法其实可以转化为若干个一位数和多位数相乘的结果之和嘛,所以我就再实现了个字符串相加的方法,就好了。