摩根斯坦利面试 - 分布式开发

第一轮

电话面试,纽约面试官,涉及binary search, completable future, volatile等很多concurrency的问题。

比如自己implement thread pool.最后题目是设计一个电梯的class

第二轮

onsite三小时。

第一轮

先是问了一些分布式client-broker-server系统可能出现的很多开发问题,例如load balancing, distributed cache, concurrency, disaster tolerance等等。然后除了两道算法题目,

第一题

class myIterator implements Iterator<T> {
 Iterator<T> delegate;

hasNext() {

}


// next will remove elements from iterator
next(){
}


//return the current top element without deleting it from Iterator
peek() {

}



}

解决方法是内部维持一个值currentValue, peek总会返回这个值,next会更新删除下一个值。注意next如果是null会抛出异常等corner case

第二题

给定一个二叉树,按层遍历这个树并返回List<List<Integer>> results, 每一level的所有值都在一个list里。

第二轮

 

Garbage Collection有那几种,怎么工作的。volatile关键字。什么是tail recursion, 什么是SOLID原则,什么是open-close, single-responsibily。equals and hashCode。

然后是算法题目

第一题,给定一个set, return all power set of it. (1,2,3)要返回(空集,(1), (2), (3), (1, 2), (1,3), (2,3), (1,2,3)要用divide and conquer的思想递归的解决问题。对于一个n elements set, 先得到n-1的set,然后每一个set都各多加入一次所有的单个element

第二题,level by level遍历一个树

第三题,如何用多线程处理List<String> 然后所有结果按顺序放在ArrayList里面。

第三轮

第一题,return一个String的所有palindrome形式。

第二题,reverse linked list

第三题,

f(i) {
//xxx
if(i > 2) { f(i-1); } System.out.println(i); }

1) f(6), 上面题目会打出什么

2 3 4 5 6

2) f(i-1)变成f(--i)会怎样

2 2 3 4 5

3) f(i-1) 变成f(i--)会怎样

Throw StackOverFlowException

4) System.out.print 放在xxx位置会打出什么

6 5 4 3 2 1

posted @ 2017-09-01 20:49  小张的练习室  阅读(245)  评论(0编辑  收藏  举报