渣硕面筋release v1.0(Google已跪)

注:凡是题目需要保密的,都没有写在这里,如有同样要求请通知我修改

校招结束,我选头条

正值十一长假,赶在了小论文截稿前一天投出去了。正好国内的互联网公司校招基本上也在十一之前结束了,我也来发一波面筋。

计算机专业,北交本科,北航渣硕,沾大神的光混过个ACM金奖。

全部投的是Java研发岗

目录

本来做了个可以跳转的目录,可是牛客的markdown不支持,sad

offer

有道

美团

头条

猿题库

悲剧

阿里巴巴

京东

滴滴

Hulu

WAP(面试题目保密)

Microsoft

Thoughtworks

Google(面试题目保密)

Airbnb(没通知面试,感觉应该是gg了)

感想

网易有道

有道是投的第一家公司。对比了网易的业务后,感觉有道不错,通过同学内推。

笔试

有道的笔试分为3个部分,笔试难度:★★★

第一部分是性格测试和智力测试。会问一些类似于公务员考试的题目,略。

第二部分是基础知识选择题。涵盖的内容很广,基本上本科计算机必修课程都会涉及到,包括二叉树遍历,数据库索引,操作系统调度算法之类的,感觉也没什么好的办法复习。

第三部分是编程题。好像不同岗位题目不一样。一共3道题目,具体题目记不清了,当天正是works applications写文档的最后一天(后面会讲这一段痛苦的回忆),状态很差,做出1.5个(按照ACM规则算的话,只能过一个签到题)。第一题很简单,属于送分题。第二题其实也很简单,就是一串数字往一个Dqueue里面放,第一次放在头部,第二次放在尾部,交替进行,最后输出这个Dqueue。我居然超出了内存限制,至今不知道为啥。第三题只记得不会,忘了是什么题。

笔试的神奇之处在于,我只做了1.5个题,居然通过了笔试。有的同学3题全做出来,结果没拿到面试资格,只能用玄学解释。

面试

面试一共3轮,在西二旗的网易大楼里,面试难度:★★★

第一轮面试

首先是自我介绍,然后根据简历上的项目问了一些Spring相关的东西。还有Java的volatile之类的问题。然后就是常规写代码。大约40分钟。

问了2个题目,第一个是给一个只包含RGB三个字符的字符串排序。第二个是求编辑距离,之前没有做过这个题目,想了一会觉得和最长公共子序列很像,DP搞定,有兴趣的同学可以去查一下,应该有原题。

第二轮面试

是个小姐姐,居然是北交的校友。也是自我介绍,问项目,问Hashmap,Hashtable之类的常规JDK数据结构。然后就是常规写代码。大约40分钟。

问了2个题目,第一个是二分查找变种,找符合要求的最左边的一个元素,答案我就不说了,稍微修改一下就行了。第二题是要求把字符串中所有的0移动到最前面,其他的顺序不变。

第三轮面试不是HR面

自我介绍,简单地聊了聊实习经历,个人做的项目,就结束了,我也不记得问啥了,好像是啥也没问。一共15分钟。

体验

面试舒适度:★★★

先说面试体验不够好的地方:

等候区座椅太少了,全程我基本属于蹲着等的状态,蓝瘦。

面试节奏太慢了。前两轮面试用了一下午,两轮之间间隔了1小时。第三轮面试和前两轮面试之间间隔了十几天,然后又过了二十天才通知结果。

再说说优点:

面试的房间还挺安静,没有乱七八糟的人。

提供矿泉水。

中秋节还给寄月饼了,点赞。

美团点评

美团是微信群里一个前辈内推的,其实并不认识,记得好像没有笔试,直接去面试了。(做了太多笔试,实在记不清做没做了)

面试

美团面试是3轮技术+1轮HR。面试难度:★★★

第一轮面试

是一个广东强调的小哥,说实话有一点点听不懂他在说什么。。。问了很多基础的东西,比如各种http状态码的含义,断点续传的下载实现,Spring的Session相关,hashmap等,都很常规。

最后写了一个题目,自己实现一个优先队列。

第二轮面试

依然是常规问题。后面聊了很多项目中遇到的问题,比如你如何解决遇到的问题,遇到的最难的问题等,我详细聊了一下自己做第三方登录过程中遇到的问题,也就是Spring Security的问题。

写了两个题目。

第一个是全排列,但是要输出当前字符串的字典序下一个排序。做完后我还提到可以用线段树优化一下,把一个O(n)的操作优化成O(logn)。

第二题他描述要实现Android上面图标移动的效果,可以移动若干个图标插入到前面某个图标之前,该怎么设计。我们讨论了很久我没有明白他的意思。最后面试结束面试官送我出去的时候我才搞明白,就是一个数组某相邻两段交换位置,各自翻转,然后整体翻转就可以了。

第三轮面试

没有手动写代码的问题了,看起来是个leader,主要聊自己的项目。还问了一些最近看的书啊,最近刷的比较难的题目有哪些之类的。

前三轮面试大概都是40分钟。

HR面

问了问老家是哪的,对自己面试表现感怎么样,都面了哪些公司,期望薪资等,就结束了。

体验

面试舒适度:★★

缺点

不光等候区座椅少人多,而且也没有水,中午也没有吃的

面试环境很乱,旁边有人在讨论工作,没有单独的会议室来面试

优点:

面试节奏快,一天就全搞定了

今日头条

准备的比较晚。有一天晚上同学们都收到了头条内推的笔试通知,我才想起来投了校招,所以没有和他们一起做笔试,但是看了内推的笔试题目,挺难的。

笔试

前面有没有选择题我忘了,只记得3道编程题,难度★★★★

第一题

比较简单,具体记不清了,就是那种没什么算法,按照题意写就能得到结果的题目。

第二题

有些难度。给一个数组,然后会有一些查询,比如查询3,6,4,表示数组从第3个元素到第6个元素中,4出现了多少次。题目保证查询的区间直接没有包含关系。直接查询时O(n^2),需要优化一下。因为题目说了区间没有包含关系,所以我们把查询排个序,然后用离线的算法,依次把数组的元素加入到一个map中,记录它出现了几次,当达到一个查询的右边界时,输出map和查询数字对应的值。然后从查询的左边界扫到下一个查询的左边界,从map里面取出这些元素。这样做扫一遍就得到答案了。复杂度是排序的O(nlogn)。

第三题

不会做,我记得我用了个深度游戏搜索,跑出20%的数据后超时了。

其他题目

还记得我错过那场的一个题目。给一个数组,区间[l,r]的最小值乘以区间之和,问最大值是多少。首先求任意区间的和很容易,求前r项和减去前l项和,就是l到r的和。解题的思路是以任意一个数为最小值,向两边扩展,一直扩展到第一个比它小的值,那么答案就是这个区间和乘以这个值。这样做是O(n^2),还是不行,怎么找到一个值左边第一个比它小的值呢?需要预处理一下,用一个上升的栈,扫一遍。右边同理。最后的复杂度是O(n)。

面试

一共3轮面试,面试题目范围很广,面试难度★★★★

第一轮

Docker的用处是什么,为什么需要它。

数据库分表如何做,有什么原则(数据库不熟,不会,只提到按hash分,按日期分,好像面试官不是很满意)

写一个sql语句,查询一张表中,发表批评最多的人

写单例模式(两种方式)

一个二叉树,从左边看,能看到的第一个节点,输出。也就是每一层的最左边的元素

第二轮

进程线程的区别(这个问得比较细,不只是简单的内存共享之类的,还包括操作系统的进程描述,写时复制,操作系统启动等问题,推荐《深入理解计算机系统》)

epoll,IO多路复用,聊到nginx的原理,和Apache的区别

常见的网络攻击方法,比如跨站脚本,sql注入之类的

Https,非对称加密等

一个秒杀系统的架构,包括CDN,反向代理,session共享,由于分布式数据库我不熟,所以数据一致性那部分没有解决。

Hashmap的实现原理,优化方法(其实JDK 8已经用二叉树替换链表了,思路差不多就是这个)

脑筋急转弯,1000桶牛奶,1桶有毒,用10只小白鼠试出来。其实就是二进制,网上有答案,提示:2^10 = 1024.

第三轮

做一个游戏,一套扑克牌,从上面拿一张放在桌上,再拿一张放在扑克牌最后,循环这个过程,最后得到一个序列。给定结果,要求把这个序列还原。我的做法是正向模拟这个过程,最后得到映射关系,反着填回去就好了。

问了个C语言的问题,strcpy有什么问题,怎么解决。我不太熟悉C,感觉可能存在src和dest有交集的时候会有覆盖问题,然后判断了一下是不是有交叉,如果是的话,src和dest谁在前谁在后,交叉的长度是多少,反着就是注意一下顺序问题(不熟C,不知道是不是这个问题)

点击一个网站后发生的所有事情,HTTP,DNS,CDN,TCP之类的东西全啰嗦一遍

HR

常规聊天,薪资啊,规划啊,兴趣啊之类的,没什么特别

体验

面试舒适度★★★★

缺点:

在食堂面试,人很多

优点:

在食堂面试,有座位,有饮料,有午饭

面试时间可以自己选择,很灵活,这一点很棒。很多公司面试时间是定死的,有时候会和自己的事情冲突。

面试效率超级高,现场出结果。此前我一度以为,有道会是我的第一个offer,没想到等了一个月后,用一个上午就通过了头条,午饭吃得惊心动魄。

猿题库

猿题库没有笔试,直接面试。

这家公司比较低调,开始都没听说过,后来去知乎看到说猿题库出手很阔绰,并且个人感觉教育行业挺有前途,就去投了。

面试

一共两轮,没有HR面,感觉面试挺简单的,面试难度★★

第一轮

常规的自我介绍,聊了聊项目

问了一些Spring,自己的项目

写了一个括号匹配的题

给一个m*n的格子,总左上角走到右下角有多少种走法。简单的dp题目。此外,如果m==n的时候,是卡特兰数,但是当时不记得卡特兰数的公式了。

第二轮

聊项目,项目中遇到的问题,如何改进等

写一个循环队列

面试官简单介绍了公司的业务

体验

面试舒适度 ★★★★★

优点

有好多零食,旺仔牛奶,有座椅

不用前台前到,贴标签,直接到会议室等待,面试环境很好

HR小姐姐很漂亮

缺点

阿里巴巴

笔试难度 ★★★★★★★★★★

内推的时候,通知我有杭州的岗位。由于个人原因,我只打算在北京工作,所以没有面试。

校招的时候,笔试真的太难了。给定10个物品的长宽高,和箱子的规格,问最少需要多少箱子能装进去。至今不知道谁做出来这个题目。

京东

忘记了是不是有笔试

面试

面试难度 ★

一共三轮面试

第一轮

大约15分钟,自我介绍,简单聊Spring,就结束了

第二轮

40分钟,聊了Java异常处理,Kotlin的一些感想,好像也没聊啥

HR

对京东的看法,个人的倾向,对面试的评价,大约十几分钟

体验

面试舒适度 ★

感觉面试全程谈笑风生,然后就悲剧了,不知道问题在哪,玄学。

缺点

三场面试分三天,效率低

每一场面试都没有按时进行,最短等了十几分钟,最长的等了半个多小时

全程没有写程序,总感觉这套路不太对

优点

貌似不同学校的面试地点不一样,我的面试地点就在北航附近,这一点还挺人性化

滴滴

内推笔试,感觉挺简单,但是挂了

校招笔试,感觉挺简单,但是挂了

Hulu

免笔试,电话一面跪

设计一个短网址,在线写一个n进制转换函数

当时那段代码确实写得很烂,挂掉没什么遗憾

WAP

这家公司是我面过的比较另类的公司,我需要简单介绍一下。

这是一家ERP公司,总部在日本,中国的办公地点是在上海。

其他公司的工资一般都是保密的,这家公司待遇是公开的,固定600w日元,大约34-36w人民币。可以说是应届生里面比较高的了。

不同于其他公司的面试,这家的面试是为期一周的短期实习。

笔试

笔试2道题目,笔试难度★★★★

这个题首先能想到是个DP问题,dp[i][2],i表示前i个人,2表示当前是否已经有越狱情况。转移方程也很简单,dp[i-1][0]表示前面i-1个人都没越狱,那么第i个人越狱只能是第i个人和前一个人属于同一个省,只有这一种情况。dp[i][1]表示前面i-1个人已经越狱了,所以第i个人可以有m中情况,随意哪个省都可以。同理,dp[i][0]也是类似的。

得到转移方程后,需要再考虑一个问题,看到数据范围是10^9,转移n次显然会超时。即使不考虑时间,光看内存也不够(其实内存可以使用滚动数组)。这是观察可以发现每次转移的方程是一样的。我们把状态i看作一个矩阵[dp[i][0],dp[i][1]],转移方程就是乘以[[m-1,1],[0,m]]。每次都乘以一样的矩阵,就可以使用快速幂计算,复杂度log(n),结合10^9的数据,完美解决。

作为一个笔试题目,这题还是挺难的。

附代码

第二题

题意忘了,是一个裸的线段树,单点更新,区间查询。

这个题目出得,感觉没什么意义。纯考现场想,肯定想不出来,而做过竞赛训练的人有觉得太基础了。

面试

在线面试,还是做题。

第一题

zigzag原题,去leetcode找

第二题

求最长回文子序列,直接反过来求最长公共子序列就好了

面试要求保密不能发

体验

面试舒适度★★

实验室的学弟拿到了offer,请问你们知道被学弟吊打是怎样一种体验吗?

Google

笔试

笔试难度:★★★★★

Google的流程和其他公司不一样。别的公司是先投简历,再做笔试。Google是先去做在线笔试,通过笔试的再投简历。

笔试地址在这里,每年校招前有5场比赛,参加任意一场即可,至于通过不通过,没有具体的标准,只能等Google通知。

一共有3个题目,3个小时的时间。每个题目包括small和large两组测试数据,每个题目有自己的分数。比赛按照分数的用时排名。我做的是E轮排153名。

第一题

在这里。大概意思是你有3中操作可以做:

在键盘上敲一个字符

复制一段现有字符串

粘贴剪切板上的字符到最后

请问,最少需要多少次操作才能生成一给定的字符串,字符串长度是100。这是个DP问题,最朴素的想法是dp[i][j][k]表示已经得到前i个字符,剪贴板上的内容是第j到第k个字符需要的最少操作数,然后状态转移也很简单,就是对应前面3种操作。

复杂度n^3,其实已经可以通过了。不过考虑到第j到第k对应的子串可能有重复,比如我们要得到aaaaaaaaaaa,那么dp[10][1][2],dp[10][2][3],dp[10][4][5]...dp[10][9][10]都是一样的。我把三维dp改为了二维,dp[i][s],表示处理到第i位,剪贴板上的内容是字符串s,然后用一个hashmap把s映射到一个数字上。具体代码可以在这里看到所有人的代码。

第二题和第三题我不会,只能用暴力把两个small的数据通过了,large的不知道怎么做,有兴趣的同学可以去看官方题解。

此外,我在做这个比赛之前去看了一些前一轮的题目,D轮的第一题也是一个DP问题。大概意思是你需要从城市1出发,依次路过城市,2,3,4...N,每个城市。每个城市i到城市i+1都有公交车,题目会给出每个城市公交车的发车时间,发车间隔,路程需要的时间。每个城市你可以选择游玩或者不游玩,如果游玩的话需要消耗给定的时间。问题是求出能够在给定时间内到达城市N情况下,能够游玩的最多城市数量。

很典型的DP问题,dp[i][j]表示到达第i个城市,已经游玩了j个城市需要的总时间。题目比较麻烦的地方是状态转移的时候,需要计算公交的发车时间,频率和路程,整体思路没什么难的。

面试内容要求保密不能发

体验

舒适度★★★★★

Google的题目还是挺难的,我觉得就笔试来讲,这个难度正好适合我。时间刚好把我会做的题目做出来,不会做的题目再给我一天也做不出来。今后想要尝试Google笔试的同学,需要去多刷点DP问题。

其实我并没有期待能拿到Google的offer,最初的想法是能够体验一下Google的面试就好,现在看来已经实现了。如果能有幸体验一下Google的食堂就更好了。

此外做这个笔试可能需要科学上网技巧。

update:

今天去面了大Google。由于题目不能发,我只能说,也没有想象中那么难,面试官很nice。由于本来就没奢望能通过面试,所以心态很放松,早餐喝了杯咖啡就驾驶摩拜单车去了。这家404公司里面和其他公司也没什么不同,一点也不神秘。中午面试,但是也没吃到食堂,很遗憾,看到了一墙的零食,也没什么胃口,只喝了瓶水。

现在我有一种面试能过的错觉(手动笑哭)

优点:

面试时间可以协调

笔试有很多场可以选择

情怀加1分

缺点:

Google让你去面试你还敢提缺点?

被告知已经GG了,感觉已经发挥了99%的能量,会的都做出来了,不会的确实是实力不够,没有遗憾。

Microsoft

笔试

4道题,难度★

一个一维的世界,给出父亲的坐标,然后父亲以n个格子为间隔,朝右边走了k步。给定儿子的坐标,儿子在父亲左边,儿子第一步一定要落到父亲的脚印上,问儿子以多大的步长走,能得到和父亲最多重合的脚印。

一个n*m的图,上面0代表空地,1代表树。相连的树组成一组。问,要留下k组树,最少要砍掉多少棵。

一个数组,查询最大值,第二大值,最小值,第二小值,还有个什么更新不记得了。用两个堆解决。

忘了

面试

难度★★

第一轮 啥也没说,直接出题写代码。字符串匹配,*表示任意个任意字符,?表示任意1个字符。二维动态规划。 第二题把一个ip地址转成32位的int,简单位运算。

第二轮 面试官拿着我的简历感觉什么内容都没有,也不知道该问啥,就让写了快排,之后写链表的快排。

感觉题目都不难,但是个人确实没什么实习经验,也没有项目经验,然后就GG了。

体验

面试舒适度★★★★

优点:

有午餐,有饮料,很舒服

认识了个小姐姐

老东家,加一分情怀分

缺点:

悲剧了,减一分情怀分

Airbnb

笔试两道题,难度★★

字符串a和b,求a的一个最短的子串,这个子串要包含b中的左右字符。

最基本的迪杰斯特拉算法

Thoughtworks

网上有人说Thoughtworks的面试难度直指Google,我体验了一下的结论是,别听别人瞎哔哔,没那么夸张。

笔试

内推没有笔试,有一个小作业。设计一个体育馆租用场地的系统。输入是一些固定格式的命令,比某某某人预定某个时间段的某个场地,或者打印当前的账单等。感觉主要是考察代码风格和基本的系统设计吧。

面试

HR面

第一轮是HR面。首先要求做一个英文的自我介绍。然后问了一些价值观之类的问题。你遇到的最困难的事情是什么啊,你在平时是如何规划自己的目标之类。

提示,和HR聊天千万别瞎BB,我觉得我应该是挂了。

技术面

面试现场修改自己的程序,增加一个折扣功能。因为我的系统每个订单是一个class,在getPrice里面判断一下这个订单能不能打折,计算价格就好了。我觉得主要是考察代码的可扩展性吧。

其他的还问了一些Spring中bean的初始化,如何注入之类的问题。

体验

面试舒适度★★★★

优点

终面有事错过了,HR后面又补充安排了一次

人都很nice,有谁有WiFi,面试最后还送了个水杯。可能是杯具的意思吧。

感想

找工作这事情,随缘。

有的公司谈笑风生,然后悲剧

有的公司瑟瑟发抖,然后录用

整体来讲,公司考察的都差不多

基础数据结构(map,stack...)

动态规划和常见算法

Spring相关+设计模式

操作系统知识+数据库(关系,非关系)

个人努力固然重要,但也要考虑到历史的进程,和一些运气与缘分。

作者:lixiaocong.com

本文来源于牛客网

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ml

编程之美----NIM游戏

: 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob。 Alic...

4079
来自专栏数据派THU

独家 | 带你入门比Python更高效的Numpy(附代码)

向量化技巧对于数据科学家来说是相当熟知的,并且常用于编程中,以加速整体数据转换,其中简单的数学变化通过可迭代对象(例如列表)执行。未受到重视的是,把有一定规模的...

1173
来自专栏码神联盟

语音识别 | Java 实现 AI 人工智能技术 - 语音识别功能

说到语音识别、语音翻译、图像识别、人脸识别等等,现在已经非常非常非常普及了,看过‘最强大脑’的朋友,也应该对‘小度’这个机器人有所了解,战胜国际顶尖的‘大脑’-...

2.2K6
来自专栏牛客网

头条测试实习岗面试

1854
来自专栏一个会写诗的程序员的博客

附录B 编程的本质附录B 编程的本质编程的本质N小结编程简史名词纪要参考资料

尼古拉斯·沃斯(Niklaus Wirth,1934年2月15日—),生於于瑞士温特图尔,是瑞士计算机科学家。Pascal语言之父。

993
来自专栏高性能服务器开发

从“成都-go-戒炸鸡”的面试题开始说起

今天晚上“高性能服务器开发”QQ群(群号:49114021,有兴趣的读者可以加一下)里面一名叫“成都-go-戒炸鸡”的群友提出了他最近面试的一些面试题,面试题内...

2193
来自专栏牛客网

京东广告搜索部 C++后台开发面经

各位老铁大家好,今天去京东世纪北辰世纪中心进行面试,本着牛客网好人一生平安的原则,特此奉上面经。 早上八点半说要面试,由于住的比较远,今天大清早的六点半起来就火...

4419
来自专栏racaljk

当我们谈论计算机科学

下午偶有所悟,特作此文防止青年痴呆。 这学期的学习算是走了一半计算机科学概论。广度的学习通常会被指责为广而不精,但对我而言这是毫无意义的,因为 ...

1064
来自专栏高性能服务器开发

去BAT,你应该要看一看的面试经验总结

说下我的面试经验吧,都是亲身经历,不喜勿喷: 我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的。 先交代下背景:坐标上海,做技术开发,...

4214
来自专栏韩伟的专栏

为何我们的代码难以阅读

任何程序员都能写出机器可以阅读的代码,但只有好的程序员才能写出人可以阅读的代码。这句话道出了要写出容易阅读的代码的困难。但是这些困难到底是什么,我们应该如何认识...

4325

扫码关注云+社区

领取腾讯云代金券