【面经】校招大摩终面 Java后端开发

大摩终面全程英语多半挂了,题目和网上面经有些不同,记录下来供后人参考。

大摩终面分成了五场,(实际上我觉得是四场)一场一场分开来说。

到了大摩,第一轮笔试会有一份试卷,开头会让你填对知识的熟悉程度,最高十分,里面包含Java,C++,Python语言类的,数据库,操作系统,网络等计算机基础知识类的,前端后端知识一类的,和大数据等一些我不认识的我觉得可以分成一类。我标了Java 6分,和后端类的知识标成了4分,学校里学的标了2分。然后是一道算法题,一道很简单的Lucky Number,大意是如果把一个数的每一个数位上的数平方和相加生成一个新的数,如果在罗若干次这个方法之后,生成的数字是1那么这些数字全是Lucky Number。

举个例子 16-> 1 2 + 6 2 = 37 1^2+6^2=37 12+62=37-> 3 2 + 7 2 = 58 3^2+7^2=58 32+72=58-> 5 2 + 8 2 = . . . . . . 5^2+8^2=... ... 52+82=......依次类推。
最后找出从1到100之间所有的Lucky Number很简单,按照他的方法去便利找就可以了。找到的话,把路径上的数(我用了一个队列来维护)全标记为True即可,不是的话,就标为False。

写完之后,会有两名面试官带我去面试房间,一个名牌上是中文拼音,一个好像不是,所以我默认是一个老外和一个中国人。第二轮面试开始,先问我这道题怎么想的,我把上面的思路和他说了一下,因为我在写题目的时候写了中文注解,所有只要把中文翻译成英文一行行说给他听就可以了。感觉说的不错,

老乡:有优化的地方的吗
我:可以把队列换成递归,直接改数组就好了
老乡:你为什么不用呢
我:写的比较快
老乡:(举了个例子,链表和数组那个随机访问快)
我:数组快
老乡:那为什么不用数组
我:呃 手写的比较快

接着又问我,如果我想用多线程优化可以吗。我想了一下,觉得可以把判断这个数字是不是Lucky Number到标记数字这一段放到并发里去,然后把标记数组加个 v o l i d a t e volidate volidate关键字。这样一个线程标记数组是否是Lucky Number的时候,就有可能被其他线程判断的时候用到。老外面试官发问, v o l i d a t e volidate volidate的作用是啥,如实回答,点头,最后结束,第二轮感觉蛮不错的。

第三面试是一个白人老外和一个感觉是中国人的女人。现聊了聊天,为什么选择大摩,你对大摩有什么了解吗,想来大摩干啥啊,之类的。= _ =然后,就懵圈了,我发现老外说话,我听不懂,(英语差不怪老外)。大概就是问了试卷上的东西。大概问了hashCode()的具体如何在Java使用,具体问了啥,想问啥,我是真没听明白,画图也不明白。然后是一条简单的sql查询和Linux的使用,呃,这些真忘了。没答上来。接着老乡发问,问了些开发组之间的东西,我就按照我现在工作的公司开发小组和她说,没啥信心。第三轮,感觉蛮惨的。从字符数上就能看出来。

第四轮面试可亲切了,两个会说中文的中国人面我。问了我一些HashMap和多线程的知识,大概就是面试常见套路,HashMap怎么解决冲突,多线程怎么控制数据不被篡改。具体说一下,HashMap是怎么出Hash值的,通过HashCode = _ =(然后我告诉他,我上一轮面试问我这个问题,我没答上来,结果面试官告诉我没事,我 ???),举了个例子如果两个值有相同的Hash值怎么办,头插 + 链表。接着问我,有没有其他的处理冲突的方法,我说了一个基础的,如果有冲突,向后延一个位置,和一个打比赛用到的乘一个大质数然后再取模。第二个问题,100个文件多线程取md5,然后引导我说出答案,就是通过加锁加抛掷异常。控制主线程循环结束条件。第四轮结束,感觉一般,总算让我见到套路题了。但是经过上一轮让我感觉没啥机会,所以干脆问了面试官,觉得我有地方不好,能让我提高一下,然后面试官和我说了两个英语单词,我 ?????

第五轮是一个类似口语情景剧一样的东西,(我?????)简单来说,就是大摩要举办个慈善活动,你来计划一下怎么搞,包含某些条件,三个人一组,两个组。然后我和同济大学的研究生老哥,和一个妹子一组,另外一组是两个外国大学的老哥老姐和一个貌似是南京大学的妹子一组,呃,尬聊,就是一人说一句,然后尴尬的看看对方。对方回一个好。然后,是外国大学的老姐领头带我们三个讨论。然后发表意见。最后结束。结束之后,我和同济大学的老哥商业互吹了一波,就跑路了。

总体感觉,问的东西挺基础的,但是挺反套路的,就是和网上流传的面经不太一样。呃,当然也有可能会想我一下把面经隐藏起来,等到没事的时候放出来。

你可能感兴趣的:(【面经】校招大摩终面 Java后端开发)