面试官是一位在亚麻呆了7年的Manager, 开始先介绍了一下他自己. 然后一系列行为问题。
Tell me about yourself.
How did you manage to learn all the new technologies
When will you choose technology/tool x over technology/tool y
Tell me about a time when you took on something significant outside your area of responsibility.
What did you do when your teammate said he needs help
个人BH经验:回答问题的时候最好把对话引到你有把握的方向
Coding:
LRU 变形。
Top K Elements。
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=472137
要求提前15min 进Amazon chime, 然后坐等, 等时间差不多了打开摄像头。 之前可以先看到面试官名字
上来 简单的自我介绍一下
bq: 有没有遇到过需要赶deadline 的project 怎么处理的 :答: 有,期末project, reprioritize tasks 然后produce working product
bq: 现在的学习目标或者工作目标: 答: 多学点技术,准备工作 掌握基础知识, 之后打算自己想搞开发,研究新商业模式
bq: 说一个你具体的project: 之前有工作半年, 所以扔了一个网址给面试官看, 然后带他走了遍当时用的technology,面试官说thanks for sharing, 然后就没深究
Coding:
找岛屿数量
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=471775
把最近阿妹总面经整理了一下,从去年9月到现在,总共分为3部分:
Coding:
1. 里口297, iterative, 自己用一个例子来画 call stack 图
2. 里口212: Word Search II (2) (时间复杂度问题会考吗)3. 已知city A坐标和周围n个cities的坐标,求前k个距离city A最远的cities. 我用了priorityQueue. follow up:实现一下刚刚用到的priorityqueue.
实现heap:
4. 实现LRU cache(2)
5. Tic tac toe 设计
6. 给一组词,找同型词 Find anagram from given words? follow up 是如果input is stream? Lc49
7. 写了一个带情景的hashtable,链表解决冲突
8. 第一个好像是recursive删除二叉树上某一些节点。构成一个新的树, 题目比较简单的点在于删除的点的父亲只有一个儿子。
9. 第二题是按照一个array里面的概率,来随机选择num in array. array里面有0,1,-1, sort一下。双指针秒了
10. 外星字典。
11. 蠡口伊尔吴变种(正向的polish),有follow up(一个operator可对应多个数字)
12. 利口153 他说有优化么,我说binary serach,logn
13. maximum sum path 变种 ,一个矩阵,左上角走到右下角那个,遇到-1不能走
14. minStack. 最优解
15. implement heapify
16. 1. 蠡口饵舅气,followup会问你如果不是儿茶树,是多茶树,怎么办
17. 2. 蠡口艺溜留。
18. 最优化输出 一个元素的 index, 数组是 排序的 rotated
19. 设计一个app上的电影搜索功能,给个搜索框,让快速列出用户输入的单词前缀对应的电影名字。一开始没弄明白是系统设计还是算法题 ⇒ 642.
20. Tiny URL 他让我用java的url类
21. 问了一个求gcd的题
23. 想知道一台机器能同时处理多少个请求, 现在只给我一堆log文件, log文件中最有用的两个信息一个是start time, 一个是duration 细心的小伙伴们肯定发现这道题脱了马甲就是lc Meeting Room II然后问我streaming input怎么改良, 我说那就只能assume所有的log文件已经按照start time排序好了
Meeting Room II
24. 妖灵妖 树对称25. 一伞酒word break26. 给一个BST, 要你把所有node的值变成比他大的node的值的之和
27. leetcode 依儿妻 word break
28. Two加... 然后完了写Three加...然后完了写Four加。在当我写完四加手已经写断了的时候印度姐扔出个K sum…
29. 面试题目是利口伞妖四,follow up是,如果是n-array tree怎么处理30. 面试题目是给一颗binary tree, 每个节点要么黑色要么白色,给定起点u和终点v,找出从u到v路径上最后一个白色节点,本质上是利口耳伞刘
31. 面试题目是给定一个graph,以及图上两个节点,判定这两个节点是否是连接的,自己定义数据结构,输入输出。要求用bfs和union-find各自实现一遍
OOD
1. OOD。国际象棋。
2. OOD poker game
3. 然后一个设计题。 一副牌,有很多的花色,和数字。
然后给了很多个比较大小的原则。 比如: 1.同花色比较大。 2.同点数比较大。 等等。。
然后自己设计数据结构,function,最后比较三个人谁的牌比较大。
大概做法个人觉得就是把每个rule按照顺序存成pair of bool。 这样就可以拓展性得比较了。 可以解决follow up: 多个用户和随时添加和删除更多的rules。
4. 设计一个亚麻快递柜,OOD
5. In memory file system
6. OOD 设计 log 访问
7. OOD问题,设计个卡牌游戏,52张牌,两人同时出一张,点数大的收走两张,直到一人输光牌为止。我展示了一下uml功底,画了个domain diagram 和 简略的class diagram。他说实现一下出牌,比较的部分。之前读过GOF的design pattern很有帮助。Follow up 问了如果是三个玩家,四个玩家N个玩家你怎么搞。我直接把抽象出来的玩家扔在一个list里,每回合轮询一遍让他们出牌,想几个玩家都行。最后问了一下怎么实现程序一直跑,我说如果是控制台的直接进主函数while(true) 就行了,GUI的就渲染出来然后等用户输入,也是个loop。最后随便聊了聊,感觉还不错。
BQ
https://www.1point3acres.com/bbs/thread-307462-1-1.html
这个帖子很好,里面包含了亚麻的14条,讲的很清楚.
本人面试的时候bq真的是很多,4轮面试,其中每一轮都有20min左右bq,其中有一整轮1h 纯bq,有一些bq题还会根据你说的进一步加深问。
Coding:
- 给一段区间: n-m, 数组里面的数是n-m, 没有重复,找出数组里面唯一缺少的那个数; 二维数组,每一行是排序的,每一列也是排序的,给一个target,找是否target在 二维数组里
- Top k frequent item.
- ood 海战船
- 白人小姊姊
自我介紹
bq : (1) 講一個Leadership/ ownership的例子
(2) 講講如何幫助周圍人度過難關
Coding :
給List of user, 每個user有各自買的書(List<Book>),給user_id,求推薦前10本書給user -> 其實就是top K frequent elements
- AWS某team lead
自我介紹
bq : (1) 講自己的Long term goal
(2) 講講一個老闆沒有要求,但成果超出預期的情況。是如何除了baseline之外優化
Coding :
實現一個Queue
-> 我用Array實現的,Followup (1) 是為何要做成Circular的,針對Front, rear滿的時候判斷條件。(2) 如果是Unbounded Queue怎麼做 (3) 如果還要多個reverse function怎麼用現有remove, add做
- 口音很重的白人大叔
自我介紹
bq : (1) Deadline趕不及如何應對
(2) 與老闆意見相左如何處理
Coding :
求由上至下的最大路徑和
[
[5],
[4, 3],
[1, 2, 7],
[-3, 4, 5, -6]. 1point3acres
]
如上,要輸出15。並且由上至下最大路徑是 5 -> 4 -> 2 -> 4
大叔一開始畫成一個Graph的結構,後來發現問題可以簡化成int[][]。就像Pascal三角額外紀錄個dp array就可以了。
第一轮先问了bq,你怎么实现一个long-term goal,针对我的回答又有问如果很忙的话怎么保证能按照plan完成,再问了有为什么long-term goal牺牲过什么short-term goal。
然后是一个比较简单的设计题,说是一个公司有project,user和group,然后怎么记录他们。然后让实现一下hashset,问了时间复杂度,我是用linkedlist实现的,所以又问了怎么能实现find O(1),就是每次add的时候,一旦slot被占用就resize
第二轮coding,
按level zigzag print tree。就是第一行从左到右,第二行从右到左以此类推
第三轮也是先bq,如果有一个项目需要下周就交,然后有一个现成的方案是可以让你按时完成的,但是你有更好的方案但是需要更长的时间,你会怎么选择。coding
返回binary tree里最长的consecutive or equal path,可以递增也可以递减,只要返回长度
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=474022
1. 第一轮
问了BQ 关于challenge。然后问dead lock以及database index是怎么回事儿(我记得貌似是bineary search。又给他说了hashmap怎么search的)
System design游戏和玩家。 游戏return top 10 score。 玩家join with score。
最开始不知道要干啥,confirm了半天。我说先用pq,取前十然后一个一个pop, 他说能不能不push 所有人。
我改成 一个list 然后 每次进来玩家都做一个bineary search这个玩家应该的所在的top10 list的位置。
三哥迟到了md7分钟本来时间不够,扔了一道remove n last in linked list.
时间不够我跟简单说了下 recursion的思路。他问loop比recursion好处是什么。我说recursion take n space。他说ok 然后下一个人就进来了
2. 第二轮 白小哥和三姐,小哥bq 如果你被其他team block怎么办,然后讨论了我在shopify的实习问了几个kafka的detail。貌似挺满意,有说有笑
然后题:
给一个string 里面带钱举个栗子: input: Dan bought 30 applies, each costs '
return一个string把里面的钱打85折: "Dan bought 30 applies, each costs $8.5"-baidu 1point3acres
要考虑$号在数字后面的情况
很简单,大家都会我就不说了。写完了go through 几个栗子,貌似还挺满意
最后一轮三姐,有点像蠡口伞久旧, 30分钟写码加go through,没BQ。秒了。剩10分钟问问题,谈笑风生。
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=454657
第一轮印度小哥, 上来先自我介绍了一下, 给我一分钟自我介绍, 然后上题,
题目是LRU变种, bq问了一个(忘了内容)
第二轮是白人小哥, 也是上来自我介绍了一下, aws security的; 基本上都是简单的数据结构问题;
问的input file unique line countting的问题, follow up问了如果文件很大怎么办; 最后implement一个Trie Tree;
第三面两轮烙印, 问了很久的bq问题; 主要和简历有关;
最后问了two sum的变种,就是包含重复的情况。
https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=462857
第一轮 白人小哥,国人小哥shadow
题很简单 利扣二世,问优化,空降时间都可以我觉得,问了一些简单的数据结构,BQ问project。
第二轮 题很简单两个链表倒序
相加,输出一个int类型结果。Follow up 他要我边加边打印链表,
第三轮 四年白人,利扣4. follow up如果stream无限,memory有限怎么办,大致意思是那我们只能得到一个近似解。
BQ做project遇到的困难,如何就交流之类。