谷歌
投递
同样是偶然在公众号看到。第一次用国内邮箱发送邮件被退回;但改用谷歌邮箱以后依旧没成功,最后请人内推。谷歌是滚动制,投递越早越好,然而正好与考试周冲突,可能投递完了只收到上海base的面试邮件。
面试用的自然语言(中英语)和计算机语言都可以在问卷中自选。
一面
给定开心数的定义:各个位上数字的平方之和计算得到新的数,一直计算下去如果能得到1就是开心数,如果进入循环,即有计算得出的数重复出现,则不是。判断一个数是否是开心数。
追问:(我使用的是Java,并且用哈希表来解决)
为什么要使用hashset?
hashset插入和查询的复杂度
哈希表底层原理?
(有点答不上来于是换了进阶算法) 给定一个10^6以内的数,返回有多少个小于给定数的开心数?
- 类似NP问题的思路(?) 被提示:有些数字进行一次各个位数字平方和就可以得到1,有些需要两次,即第一次先得到到1只有一步开心数计算的数字,以此倒退。
微软提前批
投递时间
12月底偶然发现公众号更新了提前批相关信息,苦于当时在考试,在跨年夜当天晚上投递了,在1月3号投递ddl当天收到了意向征集的表格。
一面
- 中英文自我介绍
- 中文介绍结束后,英文自我介绍的时候被提醒介绍些简历之外的信息,于是回答了为什么想要来投递,被追问了原因。(对自己说的每一句话都要有圆回来的能力)
- 项目
- 选一个印象深刻的项目介绍。
- 三个问题:
- what:一个怎样的项目,实现了怎样的效果
- why:为什么要做这个项目
- how:如何实现的,有什么印象深刻的问题,是如何解决的
- 算法
- 给定一个整数数组,要求把奇数放在数组左侧,0在中间,非0整数放在右侧
- 反问:介绍苏州组的业务?
二面
- 项目
- java项目中的多机联网是怎样做的?服务器和客户端是怎样交互的?
- 突然有一方掉线了如何处理?如何确认对方依旧在线?
- 算法
- 有无限枚面值分别为1,2,4,8的硬币,给定一个数值给出有多少种兑换方式(提示:利用bfs/dfs思考,对每种面值,确定该兑换方法下兑换多少枚)
- 反问&其他
- 面试官问:对自己的未来如何打算的?(因为简历上的方向和目前实习的方向不完全一致)
- 反问:如何找到自己的方向?提升的通用方法?
终面
项目
- 模拟计算机的项目是独立完成的吗?任务量大概多大?(面试官恰巧是校友)
算法
- 给定一个有随机指针的链表,已知随机指针可能为空或者指向任意一个不是本节点的链表上的节点,对该链表进行深拷贝。(时间允许的情况下完整写完代码并进行了测试)
反问
- 实习生的培养方式?上班时间和节奏?
Overall
固定节目是:自我介绍,问项目,算法题;保留节目是反问。
自我介绍可以复述简历上的技能,但是也有面试官严格一些会追问。我选择介绍投递该岗位的理由。(因为剖析自己性格优缺点我实在是说不出口,尽管论坛里很推荐)
项目需要记住自己做了什么,怎样做的,最终效果。最好多想想有什么优化的地方,并且对用到的技术思路有所了解,面试前可以把认真写的实验报告拿出来复习。(微软二面危在此处的血泪教训)
算法题,体感谷歌问的题目有点智力题的感觉,不是太依赖技巧,而且需要知其所以然,所谓”基础扎实”。做完热题100/剑指offer合集会有个大概认知,遇到新题不能说见过但是会有一些基础分析思路。
反问是一个很好的了解公司的环节。如果感觉不好一般问如何提升(显示我知道自己菜虚心学习),太尴尬了就不问;感觉还可以就会问工作内容/工作节奏/培养方案。
两家外企的面试节奏都比较慢,投递邮件4-7天后得到面试通知(春节前),面试结束后,如果有接下来的面试,微软是2-3天得知结果并且收到下一轮面试邮件;最终结果都是在大概5-7天后邮件发送。
一些马后炮
最开始想着主攻外企,于是只投了这两家知名外企。但是等待中发现这样做太过冒险,国内大厂的暑期实习面试启动时间基本在年后,年后开学再准备投递其他家时间就太紧了,应该至少再海投几家外企。还好最后被微软捞了,不然任务栈会直接爆炸。
准备期间也不是100%精力投入,依旧有遗漏的地方,所以遗憾被谷歌拒了。面试无论是八股还是算法知识点都不少,做成知识地图或许能更好的查漏补缺。
其实很难有完全准备好的时候,不同的时间总是有事要忙。因此每次快要开始前和等待结果的时候都最紧张,但是一旦开始,或者已经不能改变结果只能等待的时候,就投入手头的事情就好了。海投也很锻炼心态。