后端Java一年经验面试记录--外企篇

个人情况

楼主一年经验的Java后端,2021年初毕业,3月份入职某互联网大厂,2022年5月份不幸毕业,之后面试了一些公司,也拿到了还算能接受的offer,近期趁着有空,将面经回馈大家。

1、核心考察点

1)、英语

一般来说工作经验越久、级别越高,对于英文的要求越高,在工作中与外国人交流的需求也越高。大多数外企对于3年以内工作经验的技术同学,要求是英文可以实现日常交流,不要求能够交流技术。
所以准备阶段可以准备一下英文自我介绍、一些常见的问答题,比如爱好、平常喜欢做什么之类的比较生活的话题(中学英语作文的最爱),以防万一也可以准备一下英文的项目介绍。
另外不同的公司、岗位和团队对于英文的要求也不一样,产品、或者职级较高、和国外交流较多的团队和岗位,会对英文有更高的要求。面试之前可以跟HR沟通咨询,对于英文的要求是怎样的,是简单的读写、沟通日常或者是沟通技术。英语相对较好的同学可以选择英语要求高的岗位,充分发挥自己的优势;英语稍弱的同学也可以避开英语要求高的岗位,选择一些与国外沟通较少的团队。

2)、技术基础/项目经历

我面试的几家外企对于八股文的考察都不算太深(相比于国内互联网大厂),一般考察的技术点都与项目有关。项目经历更加看重对于整体设计的理解和产品的上下游链路的了解。
另外项目的一个共性就是大家都喜欢问高并发,无论是什么厂都喜欢问QAQ

3)、算法题

大多数都比较重视算法题,我面的几家只有花旗没有要求算法题。
微软大概是4-5轮面试,每轮都有算法题
亚马逊因为我是一年经验,所以是按照校招生的职级面试,有一轮笔试两道题。如果笔试没有全A就会有一轮算法面试,两道题,之后还有两轮面试,每轮一道算法题。
grab有三轮技术面+1轮HR面,技术面每轮一道算法题。

2、微软面经

团队:azure

1)、一面:

问项目、技术基础,具体题目忘记了
算法题:以图判树(LeetCode261)

2)、二面:

项目的亮点和难点
HashMap的底层实现
Long有几位
还有一些问题忘记了
算法题:两个字符串表示的数相乘(LeetCode43)

3)、三面

项目、技术基础,具体的问题忘记了
算法题:n个括号的可能的组合(LeetCode22.括号生成)
微软的一面相当于简历面,之后会有几轮的LOOP面,应该是有一次挂的机会(比如一共4轮至少3轮通过,一共5轮至少4轮通过,这个样子),但是挂了可能会影响录用的优先级QAQ,所以还是要竭尽全力准备好每一轮面试。
我这边是面的过程中,hc没了,所以凉凉了QAQ

3、亚马逊面经

0)、面试流程

先要在官网投简历,可以找HR推荐部门,或者找内推人。我个人认为,内推人的优势可能是简历直达,可以提前帮忙问一下简历是否符合要求。HR帮忙推荐的话,优势是HR这边的岗位资源比较丰富,可以根据候选人的项目经验、英文水平推荐更加匹配的岗位。
之后会发送一个笔试的邮件,需要在7天之内完成。邮件里也有练习的链接,担心自己不熟悉流程的话可以提前练习一下。
笔试题目是全英文的,一共两道题,我遇到的都不是原题,而且难度不太稳定,有一个题和很多同学交流过,至今仍未想出合适的答案,只想出了暴力解法(以后有空发出来给大家看看,这个题目比较绕,有点难描述,不在这里细说了)。每道题提交之后,有一个可以写思路的地方,可以把自己的思路写出来。
这个题目没有全A也没关系(据HR说会有自己的评价体系),我A了一道,一周左右收到了约面。没有全A的话会有一个算法题的加面。之后会有两轮LOOP面试(低职级和校招)。前面面试、约面的流程都比较慢,所以请大家耐心等待。

1)、一面

相当于算法的加面。简单问了项目
两道算法题
(1)字符串序列(给一个字符串,这个字符串中的字符有多少种排列方式,可能是原题,有好几道类似的,记不太清了)
(2)topk。经典问题,不多说了

2)、Loop一面

项目:介绍一下项目的流程
算法:零钱兑换(LeetCode322)
BQ问题:
(1)说出一个不在你的工作范围之内,但是你努力解决的例子
(2)说出一个你在工作中遇到了问题,与其他人一起对这个问题进行深挖的例子

3)、Loop二面

项目:介绍背景、难点、主要工作
问了责任链模式的实现,没答上来
算法:tab键和空格的转换(没找到原题。tab键相当于4个空格键。设计一个函数,输入一个字符串,将字符串内的tab键全部转化为空格键。之后再设计一个函数,输入一个字符串,将字符串内的空格键都转化为tab键。过程中的转义字符只需要考虑换行“/t")

4、Applovin面经

这一家明确说了有点累,不像别的外企那么躺平,所以一面通过了以后我没有继续面了

1)、算法题:

删除链表中的倒数第N个节点(剑指offer022)
我用双指针,面试官问可不可以用某个数据结构来完成?我说用栈,虽然我不理解为什么明明一个双指针就可以解决的事情,非要用栈

2)、基础

HashMap遍历的时候是有序的吗?hashmap的key可以为空吗?是否是线程安全的?线程安全的hashMap是什么?排序的map是什么?
lock的实现类是什么?和syncronized有什么区别
spring的依赖注入和控制反转,循环依赖问题,A中有B,B中有A,会怎么处理
Mysql用的什么引擎,为什么要设置自增主键,事务隔离级别设置的是什么
Redis实现分布式锁用的哪个命令

5、LeetCode

没错,它是一家外企。并且作为算法考察平台的公司,考算法是非常多的。

1)一面 两道算法题

(1)题目1
1042. 不邻接植花 需要注意边界条件!
(2)题目2
给定一个矩阵,需要从左上角走到右下角。矩阵中会放置一些障碍物,小明会得到一个梯子,他可以从比较高的位置跳到比较低的位置,也可以利用梯子的高度,当前高度+梯子长度 >=下一个位置的高度,就可以跳过去。求最小跳数。
这个用广度优先搜索,新建一个矩阵存储到达这些节点的目前可以的最短跳数。按照广度优先,每次访问到的有变化的节点都塞入到队列中重新再把它的周围遍历一次。

2)二面

介绍项目
一道算法题
给定一个有序的循环单向链表,向其中插入数字,返回头结点(最小的节点)

6、LinkedIn 领英

投递了好久之后才有约面,面的特别好,但是面完就没有消息了QAQ
问了项目,主要考察对于项目整体的理解,具体的技术问题倒是不多
算法题1:
给一个数组,找出其中的三个数字,可以组成三角形,任意三个数字就可以,只需要返回其中一组。
因为我做的特别快,然后又出了算法题2
算法题2:
合并k个有序链表(LeetCode23)

你可能感兴趣的:(面试,java,职场和发展)