摩根士丹利信息技术部暑期实习终面(已OC)
一面(3月18日)完第二个工作日(3月21日)收到了终面通知,终面有点特别,分为4个part,总共3个小时,全英文笔面试。
Part1 (9:00-9:30)
加入会议室后,会有HR告诉你笔试链接(面试邮件中附了)的密码,30分钟2道代码题,核心代码模式,比较easy。笔试过程中HR会邀请你进入另外一个会议室,之后会有面试官进来。
题1
有一个停车场,共n个车位,均在一排。一些车位上停有一些车,给你一个list,记录了每个车的车位号。现在想要用一个roof覆盖k辆车,问这个roof的最小长度是多少?
输入:list = [6, 2, 7, 12], k = 2
输出:2
解释:共4辆车,想用一个roof覆盖2辆车。
覆盖2号车位和6号车位,len = 6 - 2 + 1 = 5;
覆盖6号车位和7号车位,len = 2;
覆盖7号车位和12号车位,len = 6
先对list排序,再维护一个长度是k的滑动窗口,记录窗口左右两端的差值,即为roof长度,取最小值即可。
题2
给你一个list,记录了一些仅以小写字母组成的字符串。另外有一个query数组,对于其中的每个字符串s,输出在list中以该字符串为前缀的字符串个数。
输入:list = ["steve","alex","jack","steves","jackson","jacks"],
query = ["steve","jack","alexs"]
输出:[1, 2, 0]
解释:以steve为前缀的有steves(steve自身不算)
以jack为前缀的有jackson、jacks
没有以alexs为前缀的字符串
构建一个字典树,先将list中所有字符串插入树中。对query中的每个字符串s,在树中进行搜索,找到最后一个字符所在节点(即以s为前缀),对此节点进行dfs即可。
Part2 (9:30-10:10)
9点半进来一个面试官,首先进行自我介绍,然后开启共享屏幕,需要给他展示一下笔试的结果,并解释思路。
- 第二道题你用到了dfs,对图算法了解多少
- 一般用什么数据结构存储图?
- 两道题的时间复杂度各是多少?
- 第一题你用到排序,你知道Java的排序用的哪个排序算法吗?介绍一下
- 快速排序的时间复杂度是多少?是稳定的吗?举一个不稳定的例子(这里我知道是不稳定的,但例子举不出来orz)
- 那你还知道有哪些不稳定的排序算法吗?举个例子(举了选排的例子)
这一轮主要就是聊笔试题,没有啥额外的问题了。
Part3 (10:30-11:10)
每轮面试结束后会有15分钟的休息时间,在会议室中等待下一个面试官的进入。第二轮面试同样需要打开共享屏幕,需要本地IDE。
- 对Java的optional了解吗(用的很少,没继续问了)
- 对stream了解吗?给你一个String stream,想要过滤其中以"a"开头的字符串,怎么写(用stream的filter方法,要求用lambda表达式,现场code)
- 如果还想要返回结果呢?并以List的形式返回(collect方法)
- 说一说hash table
- String的hashcode怎么计算?如果让你实现,你会怎么实现?
- Integer的hashcode怎么计算?
- 关系型数据库和非关系型数据库的区别?了解哪些非关系型数据库?
- 有两个表,一个表记录了员工id和员工姓名,另一个表记录了员工id和员工家庭住址,一个员工可能有多个家庭住址,现想查询所有员工的id、姓名和住址信息,怎么写SQL?
- JVM的堆和栈分别存储了什么?
- GC回收的是哪个区域的内存?
聊完之后写了两道题,还有反问环节。
题1: 用rand7实现rand10
提供一个函数rand7,可以生成1-7之间的随机整数,如何用这个函数生成1-10的随机整数?
力扣原题:用Rand7()实现Rand10(),拒绝采样
题2: 跳格子
给你一个数组step,step[i]表示在位置i,你最多跳step[i]步,即如果step[2] = 3,当你在位置2时,你最多能跳3步,跳到位置5。现在你在位置0,问跳到最后一个位置的最少步数是多少?
例1:
输入:step = [1, 2, 3, 4]
输出:2
例2:
输入:step = [2, 100, 1, 1, 1, 1, 1]
输出:2
动态规划,dp[i]记录跳到位置i的最少,两层循环,记录最小值即可。
Part4 (11:20-11:50)
这一轮是HR面,会有两个HR,主要问一些职业规划,个人工作方面的问题。聊的很尬,一方面是网络问题有延迟,总是听不清面试官说啥,另一方面我的口语还是太差了,找不出词汇表达。
- 为什么会有转行的想法?
- 为什么会对编程感兴趣?
- 在你自学的过程中,如何平衡学习和转行的关系?
- 你是怎样自学的?
- 如果工作中有个任务交给你,但是语言是C++,你对此不熟悉,你会怎么办?
- 为什么想来摩根?
- 你了解摩根吗?
- 未来3年,你更想在摩根这样的金融公司,还是eBay这样的互联网公司,或者是国内的企业?
- 有什么想问我们的吗?
anyway,摩根的笔面试都不是很难,面试官都挺nice的,表达不出来也没关系。像这种外企除了基础能力之外,更可能看的是英文能力了,英语是短板orz,日后一定好好加强。
3月23日收到OC啦~
#摩根士丹利##面试题目#