拼多多【学霸批】面经

直接上干货了

时间:2018-08-12
地点:浙大玉泉校区
投递岗位:平台研发工程师
应该是每个人都有三面(两轮技术面,一轮HR),三面是平行的,顺序不一。

一面:技术面
持续时间: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
我说了我的方法(用集合,暴力)
面试官提示:如果用户特别多,但是好友关系很少,怎么办。
我想了会。给出优化方案:只查找给定用户的好友的好友即可。

然后开始问GC,直接让我说,我说了几种方法
面试官问了哪些对象可以做GCroot,我说了几个,没说全。。

之后就是HR让回去等通知了(凉了?)
貌似每个人都是三面。

你可能感兴趣的:(拼多多【学霸批】面经)