直接上干货了面试
时间:2018-08-12
地点:浙大玉泉校区
投递岗位:平台研发工程师
应该是每一个人都有三面(两轮技术面,一轮HR),三面是平行的,顺序不一。redis
一面:技术面
持续时间:80分钟左右
面试官看起来比较好,开场自我介绍,面试官了解一些基本状况。
开始问项目,面试官挑了我一个本科作过的比赛,让我说,主要是就是说原理,具体实现没问(由于面试官不懂控制理论。。)
而后问了一个近期的项目,问了mycat,怎么分库分表,大家数据库怎么设计的,为何这么设计,分表的依据,怎么优化
我想了一下子答的。
问了redis应用场景,数据类型,数据结构,淘汰机制。
问了数据库索引,有哪些,有什么用。
接下来开始问我学过哪些课(由于我是跨考的),而后问了经常使用数据结构有哪些,排序算法,相应的复杂度,不是很难。
队列和栈的区别,现实生活中的例子。
树,n个节点的树的高度(m叉,二叉)
图的种类,应用场景
红黑树的应用场景(幸亏没多问,就问了场景),解决什么问题。
重写笔试题,具体题目是,给一个字符串(长度4k),顺时针打印成正方形,这个讨论了有点久,而后问怎么优化。算法
我开始给的方法:用二维数组存好 例如abcdefghijkl(k = 3) 打印结果: ``` abcd l e k f jihg ``` 优化后的: 第一行和最后一行直接打,中间的,判断头和尾在字符串中的位置便可。 好比,i从1开始, 第i行的开头在字符串str中的位置就是str.length() - i 第i行最后一个字符在str中的位置:k + i
计算机网络数据库
浏览器地址栏输入www.baidu.com发生什么,我说了dns,tcp,http 之类的,比较概况 面试官:dns具体流程,怎么查询 我大概从缓存,再到嵌套查询答的
操做系统数组
死锁条件
Linux
怎么看文件行数,这个我真不懂,只知道tair。
字符串匹配,grep,awk浏览器
HR面
没错,HR在第二面
没啥好说的,自我介绍,兴趣爱好,工做地点,加班状况什么的。没问技术,差很少20分钟。缓存
技术二面
面试官可能还没30吧,看起来也还好说话。网络
自我介绍
挑一个项目讲,让我讲原理,画图,解释给他听。
基础算法:最大子数组,我原本想说dp法的,后来以为太套路了,直接说了空间和时间复杂度最小的(从dp演化而来),
leetcode入门题。。代码以下,基本一致数据结构
public int maxSubArray(int[] nums) { if(nums == null) return Integer.MIN_VALUE; int sum = 0; int left = 0; int res = Integer.MIN_VALUE; for(int i = 0; i < nums.length; i++){ if(sum < 0){ sum = nums[i]; left = i; } else{ sum += nums[i]; } res = Math.max(res, sum); } return res; }
接着开始让我重说一下笔试题的第三题(最多共同好友)
是这样:有不少用户,每一个用户都有好友,如今给定一个用户,让查和他共同好友最多的人(这我的和那个用户不是同一我的)
好比:
id 好友
0 1 2 3
1 0
2 0 3
3 0 2 4
4 3
我说了个人方法(用集合,暴力)
面试官提示:若是用户特别多,可是好友关系不多,怎么办。
我想了会。给出优化方案:只查找给定用户的好友的好友便可。tcp
而后开始问GC,直接让我说,我说了几种方法
面试官问了哪些对象能够作GCroot,我说了几个,没说全。。
以后就是HR让回去等通知了(凉了?)貌似每一个人都是三面。