拉勾夜宴是拉勾网举办的针对 Java 开发者的招聘会,云集不少知名企业,上周五我和同事一起去现场试了一把。
第一家是摩天轮,他们在广告在上海地铁处处可见。
我旁边观察许久,被面试者一个问题答不上来就要立马让贤。我同事先去试了一把,没有通过,我我又去试。
上来便让我手写快速排序,没能写出,然后让写冒泡排序,我有印象可以口述出来但写出来比较吃力,于是放弃掉了。
出师不利,对我信心有些打击,便闲逛起来听听别人都是怎么面试的,还有面试官提问的问题。最后发现一家叫躺平设计家的企业面试官问的问题我基本上都熟悉,便鼓起信心试了一把。
首先是 HR,我把唯一的一份简历递交过去之后,她问了一些个人概况,之后技术面试官开始发问,我这里简单记录一下。
无限创建线程,会最先出现什么异常?
答:内存溢出
双亲委托类加载的特点
答:优先从父类加载,保证安全性。
相同 String 不断的创建,最终会有多少 String?
答:只会有一个。
Java 线程占有内存大小
答:不清楚,说明了栈的作用和配置方法。
String 和 Class 缓存在哪个区域?
答:永久区
还有其它问题,记不大清楚了。 他觉得我基础还行便给了我一张 Offer 卡,约我下周一去他们公司继续面试。
我周末赶紧花时间把简历从一页扩充到三页,整个人更有自信了。
周一很快就揭开面纱,还是之前的 HR 接待了我,这次面试是另一位技术负责人,主要问了一些案例性问题。
第一个问题是 Java List 有哪些类型,我告诉他有 ArrayList LinkedList CopyOnWriteArrayList,其次 ArrayList 和 LinkedList有什么区别,我从查找和插入操作解释了它们之间的效率差异, 感觉他还算满意。
第二题是如何利用 List 存储上海市 2500万人的身份证号码,我回答是采用有序存储,然后二分查找,他说身份证不是数字没法这样做,我告诉他可以按 ASCII 值排序,他勉强认可了,但是让我回去想想有没有其它的解决方法。
第三题偏算法,有数组 R =[7, 3, 2, 9, 4, 8,....]
数组 K长度为 3,作为滑动窗口存在,比如第一次滑动 K =[7, 3, 2],求最大值得到 7
然后滑动一次,K = [3 , 2, 9],求最大值得到 9
设计算法求出滑动窗口所有最大值。
我写了一个非常简单的算法,本来想利用上一次比较结果节省比较次数,当时脑袋短路了,没思考好。
我的简单算法
public static int[] find0(int[] R) {
int[] OUT = new int[R.length - 2];
for(int i = 0; i + K <= R.length; i++) {
int max = Integer.MIN_VALUE;
for(int j = 0; j < K; j++) {
max = Math.max(max, R[i + j]);
}
OUT[i] = max;
}
return OUT;
}
他让我求这个算法的时间复杂度,我最终计算得到 O( N+ M -1),然后他说没什么问题了,让我周四过来 CTO 面试。
周四也就是今天我来了,CTO 感觉非常老成。首先让我自我介绍,然后问我们的产品是什么,服务端架构画一下,介绍一下开发中的难点,诸如此类,感觉介绍难点的时候回答的不够好,感觉还不够难,以后需要加强这方面终结。
CTO 面试完,没有当初告知结果,HR 就让我等通知,我现在瑟瑟发抖,估计是要黄了。
自勉,加油吧!
网友评论