m*****n 发帖数: 204 | 1 本人在东岸,最近在找Core Java码工职位。面了几家,有金融有tech。大致总结一下
,并付上几道所谓设计题。
金融方面大家都说现在buy side比sell side日子好过,看来比较有道理:recruiter那
里看到的几乎都是buy side职位。谈过四个地方,面了两个。总的说来它们不太看重
finance的知识,但是重视程序开发经验,尤其是与distributed system/messaging相
关。谈的内容包括以往工作经验,Java语言基本知识,Java GC 和multi-threading,
编程/算法,brain teaser。我遇到的编程题都不难,在150题的平均难度之下。
这几个地方的共同问题是系统比较小,技术上挑战性不大,而且比较难的问题还有可能
交给consultant干。再有就是前台support很重。好处是比较稳定,好年成bonus也不少。
所谓tech就是F和G了。我很out,直到今天才知道T在城里也有地方,在F家等人等的无聊
盯着对面的楼看,看的其实就是T家。
G的面试没什么特别的:6个人,每人45分钟。1个人泛谈设计,一个人问海量数据
lookup,剩下的是编程,都不难。最复杂的一道是给定一组无序整数找最大的连续
range。我一开始没想到O(1)的解法,面试的人给了提示用hash。感觉不需要担心找
到的是不是最优解,关键是勤动嘴解释思路,给对方提示的机会。
F先叫去作onsite coding test.然后去西岸正式面试,四轮,每人45分钟。一轮是系
统设计,问设计一个load balancer 需要考虑那些问题;另一轮是看cultural fit,谈
了谈工作经验并坐一道小题。后两轮是作题,每人两道小题,不出树和binary search
范围。onsite feedback说我push back不够,应该多问问题,结果又加了一轮。谈的是
下面最后一题。
这拨面试最惊讶的就是编程,难度和版上面经里的没法比。
被问到的设计题有以下几道:
1。 设计a deck of card。问你要加哪些classes和methods。
2。 设计一个server hosting poker games,问system components and API.
3. 电梯问题,聊一下design goals and tradeoffs.
4。上面提到的load balancer 问题
5。设计一个页面去集成若干个site的content,谈一下程序的流程。
这类题我一向很讨厌,因为没干过缺乏context。只有自己不断make assumptions然后
问对方是否合理,还是可以得到一些提示的。 | w****x 发帖数: 2483 | | c******n 发帖数: 710 | 3 "无序整数找最大的连续range"
这题没有看明白,怎么O(1) | g*****g 发帖数: 34805 | 4 这不就跟那个最大连续subsum一样的吗。
【在 c******n 的大作中提到】 : "无序整数找最大的连续range" : 这题没有看明白,怎么O(1)
| c******n 发帖数: 710 | 5 那怎么O(1)?我只会O(n)的
【在 g*****g 的大作中提到】 : 这不就跟那个最大连续subsum一样的吗。
| g*****g 发帖数: 34805 | 6 O(1),把数组读一遍就O(N)了,不可能O(1)
【在 c******n 的大作中提到】 : 那怎么O(1)?我只会O(n)的
| c******n 发帖数: 710 | 7 我也觉得不可能,所以才问的,谢谢
【在 g*****g 的大作中提到】 : O(1),把数组读一遍就O(N)了,不可能O(1)
| c****g 发帖数: 85 | 8 多谢分享。
Java GC 和multi-threading,怎么复习,对方怎么考察的?
现在觉得算法题好准备的。别的,是不是看看tutorial啊?
少。
【在 m*****n 的大作中提到】 : 本人在东岸,最近在找Core Java码工职位。面了几家,有金融有tech。大致总结一下 : ,并付上几道所谓设计题。 : 金融方面大家都说现在buy side比sell side日子好过,看来比较有道理:recruiter那 : 里看到的几乎都是buy side职位。谈过四个地方,面了两个。总的说来它们不太看重 : finance的知识,但是重视程序开发经验,尤其是与distributed system/messaging相 : 关。谈的内容包括以往工作经验,Java语言基本知识,Java GC 和multi-threading, : 编程/算法,brain teaser。我遇到的编程题都不难,在150题的平均难度之下。 : 这几个地方的共同问题是系统比较小,技术上挑战性不大,而且比较难的问题还有可能 : 交给consultant干。再有就是前台support很重。好处是比较稳定,好年成bonus也不少。 : 所谓tech就是F和G了。我很out,直到今天才知道T在城里也有地方,在F家等人等的无聊
| E********e 发帖数: 63 | 9 最复杂的一道是给定一组无序整数找最大的连续
range。我一开始没想到O(1)的解法,面试的人给了提示用hash。
.......................................................
O(N)的该怎么做啊,大牛们能不能zkss | c********r 发帖数: 286 | | | | l*****a 发帖数: 14598 | 11 报一下东安的offer吧
版上98%都是西安的
少。
【在 m*****n 的大作中提到】 : 本人在东岸,最近在找Core Java码工职位。面了几家,有金融有tech。大致总结一下 : ,并付上几道所谓设计题。 : 金融方面大家都说现在buy side比sell side日子好过,看来比较有道理:recruiter那 : 里看到的几乎都是buy side职位。谈过四个地方,面了两个。总的说来它们不太看重 : finance的知识,但是重视程序开发经验,尤其是与distributed system/messaging相 : 关。谈的内容包括以往工作经验,Java语言基本知识,Java GC 和multi-threading, : 编程/算法,brain teaser。我遇到的编程题都不难,在150题的平均难度之下。 : 这几个地方的共同问题是系统比较小,技术上挑战性不大,而且比较难的问题还有可能 : 交给consultant干。再有就是前台support很重。好处是比较稳定,好年成bonus也不少。 : 所谓tech就是F和G了。我很out,直到今天才知道T在城里也有地方,在F家等人等的无聊
| m*****n 发帖数: 204 | 12 typo. O(n).
【在 c******n 的大作中提到】 : "无序整数找最大的连续range" : 这题没有看明白,怎么O(1)
| m*****n 发帖数: 204 | 13 for each int i,
check if (i-1) or (i+1) is in the hash map.
if (yes) i is bordering on one or two ranges, expand/merge them, and
update key.
if (not), add mapping i -> [i, i]
O(n) if there are no dups in input.
【在 E********e 的大作中提到】 : 最复杂的一道是给定一组无序整数找最大的连续 : range。我一开始没想到O(1)的解法,面试的人给了提示用hash。 : ....................................................... : O(N)的该怎么做啊,大牛们能不能zkss
| j********g 发帖数: 244 | 14 请问设计题要答到什么程度啊?画画diagram应该不够吧,是不是要把基本的class,
method什么的都写出来吗,时间够吗,谢谢 | m*****n 发帖数: 204 | 15 GC知道Hotspot VM default GC implementation就行了。就是那个generational
copying for young space + mark and sweep for old space. 最好记住那几个Eden什
么的名字。还有一个程序如果只有full GC才能回收内存让你分析为什么之类的。
multithreading and concurrency: 记住1。6的那些sync variable并能根据问题选
择合适的用就行。另外就是搞明白java 1.5 对volatile的改动是为了什么。
【在 c****g 的大作中提到】 : 多谢分享。 : Java GC 和multi-threading,怎么复习,对方怎么考察的? : 现在觉得算法题好准备的。别的,是不是看看tutorial啊? : : 少。
| c******5 发帖数: 84 | 16 请问下怎么expand/merge呢? 谢谢
【在 m*****n 的大作中提到】 : for each int i, : check if (i-1) or (i+1) is in the hash map. : if (yes) i is bordering on one or two ranges, expand/merge them, and : update key. : if (not), add mapping i -> [i, i] : O(n) if there are no dups in input.
| E********e 发帖数: 63 | 17 What is the output of this seq
{ 1, 3, 99, 5, 2, 4 }?
is it 5 or 1 | l*****s 发帖数: 603 | 18 金融类的公司的码工的奖金不比大软件公司的高,很多时候到不了10%。 | m*****n 发帖数: 204 | 19 Say data is { 1, 3, 99, 5, 2, 4 }
First step, map content is [1 -> [1, 1]]
Second step, map content is [1 -> [1, 1]], [ 3 -> [3, 3 ]]
Third step, map content is
[1 -> [1, 1]], [ 3 -> [3, 3 ]], [ 99 -> [99, 99 ]]
Fourth step, map content is all of above + [ 5 -> [ 5, 5]]
Fifth step: with 2, you can find [1, 1] and [ 3, 3], which needs merging.
map is
[ 1 -> [ 1, 3 ]], [ 3 -> [ 1, 3 ] ], [ 99 -> [99, 99 ]], [ 5 -> [ 5,
5]]
It is no point adding 2 to the map when there are no dups.
Last step, everything merged together and you have [1 -> [1, 5]] and [5 -> [
1,5]], among others.
【在 c******5 的大作中提到】 : 请问下怎么expand/merge呢? 谢谢
| m*****n 发帖数: 204 | 20 跟G谈时已有outstanding offer。G match了base。总额是 low 200s (十年工作经验).
表示不去以后G说有谈判空间,我没follow up.
跟F没谈到数字。因为个人原因不准备去了。本想等等他们的offer收集点信息,可是被
另一家的crazy recruiter烦坏了,就把所有不想去的地方都谢绝了。
【在 l*****a 的大作中提到】 : 报一下东安的offer吧 : 版上98%都是西安的 : : 少。
| | | c********r 发帖数: 19 | 21 估计楼主最后还是选了金融类的公司,看来还是金融类的公司有 钱图 啊
).
【在 m*****n 的大作中提到】 : 跟G谈时已有outstanding offer。G match了base。总额是 low 200s (十年工作经验). : 表示不去以后G说有谈判空间,我没follow up. : 跟F没谈到数字。因为个人原因不准备去了。本想等等他们的offer收集点信息,可是被 : 另一家的crazy recruiter烦坏了,就把所有不想去的地方都谢绝了。
| c*********e 发帖数: 16335 | 22 没问spring,hibernate的东西?
少。
【在 m*****n 的大作中提到】 : 本人在东岸,最近在找Core Java码工职位。面了几家,有金融有tech。大致总结一下 : ,并付上几道所谓设计题。 : 金融方面大家都说现在buy side比sell side日子好过,看来比较有道理:recruiter那 : 里看到的几乎都是buy side职位。谈过四个地方,面了两个。总的说来它们不太看重 : finance的知识,但是重视程序开发经验,尤其是与distributed system/messaging相 : 关。谈的内容包括以往工作经验,Java语言基本知识,Java GC 和multi-threading, : 编程/算法,brain teaser。我遇到的编程题都不难,在150题的平均难度之下。 : 这几个地方的共同问题是系统比较小,技术上挑战性不大,而且比较难的问题还有可能 : 交给consultant干。再有就是前台support很重。好处是比较稳定,好年成bonus也不少。 : 所谓tech就是F和G了。我很out,直到今天才知道T在城里也有地方,在F家等人等的无聊
| E********e 发帖数: 63 | 23 开始以为数字在原数组也必须是连续的,
这样的话就能理解了。
多谢大牛呵~~
,
【在 m*****n 的大作中提到】 : Say data is { 1, 3, 99, 5, 2, 4 } : First step, map content is [1 -> [1, 1]] : Second step, map content is [1 -> [1, 1]], [ 3 -> [3, 3 ]] : Third step, map content is : [1 -> [1, 1]], [ 3 -> [3, 3 ]], [ 99 -> [99, 99 ]] : Fourth step, map content is all of above + [ 5 -> [ 5, 5]] : Fifth step: with 2, you can find [1, 1] and [ 3, 3], which needs merging. : map is : [ 1 -> [ 1, 3 ]], [ 3 -> [ 1, 3 ] ], [ 99 -> [99, 99 ]], [ 5 -> [ 5, : 5]]
| m*****n 发帖数: 204 | 24 G's offer was actually slightly better. I have other personal considerations
.
【在 c********r 的大作中提到】 : 估计楼主最后还是选了金融类的公司,看来还是金融类的公司有 钱图 啊 : : ).
| p*g 发帖数: 141 | 25 HashMap map = new HashMap();
for (int n : a) {
Interval left = map.get(n - 1);
Interval right = map.get(n + 1);
if (left == null && right == null) {
map.put(n, new Interval(n));
} else if (left != null && right != null) {
int min = Math.min(left.left, right.left);
int max = Math.max(right.right, left.right);
Interval in = new Interval(min, max);
map.put(min, in);
map.put(max, in);
map.put(n, in);
} else if (left != null) {
int min = left.left;
int max = Math.max(n, left.right);
Interval in = new Interval(min, max);
map.put(n, in);
map.put(min, in);
map.put(max, in);
} else {
int min = Math.min(right.left, n);
int max = right.right;
Interval in = new Interval(min, max);
map.put(min, in);
map.put(max, in);
map.put(n, in);
}
}
int max = 0;
int start = -1;
for (Map.Entry en : map.entrySet()) {
Interval intv = en.getValue();
int len = intv.right - intv.left + 1;
if (len > max) {
max = len;
start = intv.left;
}
}
int[] rv = new int[max];
for (int i = 0; i < max; i++)
rv[i] = start + i;
return rv;
再怎么优化一下?
【在 E********e 的大作中提到】 : 开始以为数字在原数组也必须是连续的, : 这样的话就能理解了。 : 多谢大牛呵~~ : : ,
|
|