每日面经IBMGoogleMicrosoft等7家公司最新面经速递!
Posted 直通硅谷订阅号
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日面经IBMGoogleMicrosoft等7家公司最新面经速递!相关的知识,希望对你有一定的参考价值。
直通硅谷每日面经整理
为了帮助小伙伴们更好的准备面试
直通硅谷帮助大家整理了每日最新面经
省去自己搜索面经的繁琐
重点标红! 我们每天都更新哦!
整理时间
2019年12月下旬
本期内容
7家公司最新面经
IBM |
|
Microsoft |
Amazon |
Tosimple |
Bloomberg |
Oracle |
部分面经阅读
(因为整理内容过多,这里只放有部分面经,想获取完整版的小伙伴们可以阅读下文“完整版获取方式”。)
【题目类】
IBM/技术电面/Pass/全职
1)intro - 我自己准备的intro涵盖面非常广,写的时候也是想避开一些特定的BQ,比如我很简短地讲解了自己原来干什么,什么契因开始编程,在实习中造成了什么impact,后来如何转了CS,今后的目标是什么,为什么申请他这边的实习能完成这些目标。通常这些讲完之后能躲开很多烦人的why这个why那个,有时候greatest strengths / challenging projects都能躲掉哈哈哈。基本说完之后就不太用面对一些对转专业不好回答的问题。
2)简历一项一项地问,让我总结每个职位做了什么,为什么做的那些事情能让我逐渐transition到CS
3)问我怎么学的programming,遇到问题的时候怎么解决的,如何让周围不懂技术的人使用我做的东西,如何使周围的人或者上司相信我在推进的技术是有用
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=580312&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Google/Onsite/全职
第一轮 求2Dmatrix中最长的increasing length
第二轮 给一堆01组成的字符串 所有字符串都是相同长度 这些字符串表示安全的pattern,每个pattern之间可以通过flip任意一个bit进行互相转换 ,给定起始pattern和终止pattern,判断能不能成功转换,所有intermediate状态必须是安全的,非常类似word ladder。follow up:给多个起始状态和多个终止状态
第三轮 给一个字符串 让你计算它的得分 得分计算规则方式如下:每有两个相邻字符是一样的元音字母,则得分加一。follow up1: 给一个字符长度 计算所有长度为该给定长度的字符串的组合方式数量使得该字符串得分为0。follow up2: 如果不是0分而是k分,计算有多少种组合方式。
第四轮 一个奇怪的设计题,给你一个城市,每户人家都有自己的邻居,并且所有人都只能直接访问自己的邻居,有一户人准备写一本族谱,他应该在书上写什么instruction能够把所有住户的名字写在族谱里,注意:住户之间可能重名,并且没有unique identifier
感觉题都比较常规,求米!谢谢各位!
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=580306&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Microsoft/OA/实习
You are given an array of non-negative integers arr and a start index. When you are at an index i , you can move left or right by arr[i] . Your task is to figure out if you can reach value 0.
Example 1:
Input: arr = [3, 4, 2, 3, 0, 3, 1, 2, 1], start = 7
Output: true
Explanation: left -> left -> right
来源:
https://1o24bbs.com/t/topic/19326
【综合类】
Amazon/Onsite/Pass/全职
第一轮:HM,人很好,纯BQ
第二轮:智力人,半个小时BQ,然后system design,shortening url,一副鄙夷的表情,问他scale有多大,给了一个很小的数字,我一算只要一台电脑就能搞定,用micro service不合适啊,就设计了一个monolith system。解释完后却说这不是他想要的,要修改scale的数据。由于时间不多了,我就大体给了个架构,还是一副苦瓜脸,感觉欠他钱似的。
第三轮:印度人,人很热情,另一个组的,因该是bar raiser。二十分钟BQ,然后是给一个 sorted array rotated at a unknown location,需要search是否存在某个number,没有重复数字。就是个4-way binary search,leetcode上貌似有。
第四轮:国人,较冷漠。BQ二十分钟,然后出题,给很多phrases,然后在打字的时候输入prefix,输出phrase suggestion。我提议用trie解决,并且每个trie node储存result list。Followup说可以不从phrase的第一个字符match,比如输入abc后的suggestion可以包括dabcd。我讲用suffix tree,反馈是performance还不够好。不给任何提示,就说performance不够好,到现在我也不知道
ineer,全部一副吊吊的样子,爱答不理的,面试题目也准备的不够充分,题目要不然就是很简单,要不然就是不知道在问什么。面试一大半是BQ,打心里不太认同leadership principal中的某几条。最后HR反馈system design面的不好,降级给了offer,没有接。感觉即使去了,组里的氛围也不会好。
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=580347&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Tosimple/技术电面/Pass/全职
电面一面:给一个大小为N的有序数组,随机替换其中k个元素(k << N),用一种复杂度小于O(NlogN)的办法重新排序数组
solution: 新建一个list, 把乱序元素放进新的list里,排序小list之后再merge两个list,注意选出乱序元素比较Tricky, 需要用到单调栈
电面二面: 给你一堆长方形的长和宽(以List形式输入),再给你一个二维矩阵board,要你判断,能不能把所有长方形不重叠的放在这个board里,注意board里面有空穴。当对应位置的两个helper matrix值都大于长方形对应长和宽时,这个地方可以有效放置该长方形
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=580341&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Bloomberg/Onsite/Fail/全职
早上十多個candidates,有的面intern,也有的面full-time
在總部六樓集合,面對著BB的美味免費食物,卻也無心情取用
HR先帶著我們參觀內部設施,讓我印象最深刻的是財經廣播室以及無所不在的即時財經面板
導覽結束後,工程師就帶著所屬的candidate去到相對應的面試房間
[Round 1]
來了兩個白人小哥,開頭就問:Why Bloomberg?
答:我喜歡科技和data,而BB是這兩樣的翹楚
況且,BB有個文化是philanthropy,這是讓我覺得有別於其他公司的地方
面試官笑笑:好像真的是如此
code第一題:valid BST我用iterative的方式秒解
code第二題:udp面經題,也是秒解
問了一個followup:如果有一個seq_num注定壞掉無法發送,那該如何及時判斷?
不是很有把握的答了:可以設一個time limit,如果在該time limit內接收端的seq_num沒有增加,則判定整個發收的process為fail
面試官笑了笑:其實這題沒有標準答案,只是想測測你的反應
code第三題:求invers
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=580334&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Oracle/Onsite/Pass/全职
聽中午帶我吃飯的中國小哥說Oracle有三個大事業群-Database, Cloud, Application
我今天面的是Database下面的5個teams
[Team 1: Database Sharding]
開場來了一個俄國manager問我什麼是Sharding
我回說是把data拆分在distributed database的nodes中,達到scalability
然後manager就介紹他們產品拆分data的一些方式(ex. hash...)
然後問我在現有nodes中,如果要新增一個node,那data要如何re-distribute
我就給了一個最陽春的re-hash的方式
就是按新增後的nodes數目,把key 用hash function及%映射到相對應的node
manager表示這樣performance不好,他們業界都是用consistent hash等等的
然後問我為什麼把data分散在nodes中,executing time會變好
我回說每個node資料少,executing time自然變好,manager點頭同意
然後又問有關Availability的問題,就是
case1: 有一個大database A, 以及它的 replica A’
case2: 把A均分成五個nodes: a, b, c, d, e 以及他們的 replicas: a’, b’, c’, d’, e’
case1 和 case2 孰優孰劣?我回答case2較好,manager接著解釋
假設A’ recovery的時間是5秒,a’ recovery的時間就只需1秒,case2的Availability當然較好
結論:distributed database三大優勢:Scalability, Low Latency, Good Availability
[Team 2: Database Access - Drivers]
印度manager敘述他們是替Oracle Database提供不同程式語言的接口
以及會編寫OCI跟做網路 proxy有關的東西,然後來了一個印度姊姊,問:
什麼是 deadlock
什麼是 memory leak? 什麼是 dangling pointer?
什麼是segment fault
process 和 thread 的差別
最後問了一題 leetcode 送分題:Number of Islands
[Team 3: TimesTen]
這其實是我最感興趣的一個組,因為In-memory database真的蠻屌的
來了一個台灣manager,用英文過完履歷後就開始用中文交流
介紹完一些TimesTen使用場景後,我最後問:
為何TimesTen無法取代傳統database
回:TimesTen容量還是比較小,並且不具備傳統database的一些features
印度senior engineer,考刷題,Binary Tree Level Order Traversal 的變形
FollowUp 1: 如果你在traversal時,另外有個writer在修改nodes該怎麼辦?
答:要對node進行操作前要先acquire lock
FollowUp 2: 在database使用場景,reads往往比writes多,因此我們不希望reads被block,請問該怎麼做?
我真的兩手一攤了。senior engineer介紹可以用MVCC, 這是他們組裡常用的一個技術
還有snapshot isolation 和 memory reclamation 等等的
来源:
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=580330&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26orderby%3Ddateline%26sortid%3D311%26orderby%3Ddateline
Google/技术电面/实习
Had a phone screen with Google. After formal introduction, the interview started:
The initital problem was that given an original word e.g. “Hello” and an expressive word “Heeeellooo”, return the starting and ending index of repeating charcters which are not present in original string. For example, “e” is being repeated three times and “o” is being repeated two times so you have to return [[“e”, 2, 4], [“o”, 8, 9]]
Follow up: https://leetcode.com/problems/expressive-words/ 2
I got extremely nervous and totally embarrassed myself. Failed the interview.
The interviewer was from Cloud team.
A = [1, 0 , 0, 7, 1, 2, 2, 2, 3 ,7]
Start at index 0.
You may travel to indx i - 1, index i + 1 or any index j where A[i] == A[j]
The goal is return the min step to reach the last elemt
The expected output is 3
[0, 4, 3, 9]->3
Given a string and a dictionary, output a sentence by adding spaces to the string. If there were multiple valid sentences I only needed to output one of them.
e.g. "theskyisblue" -> "the sky is blue" and "theseapplesaregood" -> "these apples are good"
When I first saw the questions I intially thought DP and thought that I was screwed because I am pretty bad at DP but the interviewer was very helpful and walked me through a different approach.
My initial approach was using greedy with 2 pointers. Basically just getting the first string that was in the dict and then saving it in a string builder. Interviewer asked me to improve my solution since it wouldn’t work for the second example since it would give the sea applesaregood which would be incorrect.
I then tried using DP and got stuck so my interviewer recommend I go back to the 2 pointer approach which I did.
The approach used 2 pointers and a Stack . I would add all valid words and increment the pointers respectively. If I got to the end and had a garabage string I would pop off the last string from the stack and reset my start and end position to be at the beginning and ending of the popped off string. I did this using the following class
static class Word {
int start;
int end;
String word;
Word(int start, int end, String word) {
this.start = start;
this.end = end;
this.word = word;
}
}
and creating a Stack<Word> .
The interviewer seemed happy about this approach and asked me about runtime. I said O(n^2) worst case and best case O(n) which he also agreed with.
Wasn’t a coding question but a code refactor question. The interviewer gave me some Java code and I needed to refactor variables and redundant logic. Changing variable names from things like s to input and adding null checks here and there. Overall pretty simple and the interviewer was really helpful.
The final question was create a binary tree given an inorder and preorder traversal. I’ve done this question before but I explicitly remember not reviewing it because I assumed they would never ask (just my luck). I ended up not being able to solve it but the interviewer said I was headed in the right direction at the end. This interviewer seemed much less engaged than the other two.
Overall I think I did okay, I felt very confident with my progress after the first two rounds but the third round was definitely much tougher.
A drop of water falls on the root node.
And water flows from each node to it’s children through edges with varying stickiness - means that it takes different amount of time for the water to go from a node to one of it’s child.
Question: How much time does it take for the entire tree to get wet?
Follow up 1: use a stack instead of recursion
Follow up 2: It is a Graph instead of tree
Follow up 3: design API :addNode, updateNode, deleteNode
来源:
https://1o24bbs.com/t/topic/19316/4
完整版领取方式
添加小助手微信:Alexjiuxiao
火速领取最新资料!
有这些哦~
最新面经看了,可答案不确定又该怎么办?
求职准备苦,找直通硅谷
Offer又被撸,找直通硅谷
直通硅谷成立4年多以来,已累计帮助2000+学员拿到心仪offer!
依托硅谷顶尖科技公司资深工程师教师资源,针对华人学生面试短板,打造精悍高效、高技术含量且紧贴面试趋势的求职辅导课程,帮助学员提高硬核能力、熟知面试技巧,拓展职场人脉,从而进入硅谷顶尖科技公司。
专业团队,经验打造,助你全面提升求职准备效率,短时间内迅速提升面试能力!
课程详细介绍请点击↙左下角原文链接~
求职文书资料:25万字四年积累资料库,包含求职文书模板、面经资料、BQ资料等,让同学在求职的前、中、后期大大节省资料搜集时间。
以上是关于每日面经IBMGoogleMicrosoft等7家公司最新面经速递!的主要内容,如果未能解决你的问题,请参考以下文章
每日面经AmazonMicrosoftGoogle等最新面经速递!
每日面经BloombergMicrosoft等公司最新面经速递!
每日面经OracleMicrosoftAmazon等公司最新面经速递!