l*********r 发帖数: 136 | 1 背景:中部弱校master,去年五月毕业,刚工作一年(中部小公司),骑驴找马中。
Onsite一共五轮:
--------------------------------------
第一轮(中东人):
给一个字符串,让压缩并解压,压缩算法类似leetcode中的count and say
输入:aabbbccd 压缩结果:2a3b2cd(注意,'d'前面没有'1')
引申:输入中如果有数字的话,解压时需要注意歧义问题,例如2a可以解压为'2a'或
者'aa',问如何解决。答曰用类似ascii码中加反斜杠的做法,或者加个header来标
志压缩过的位,表示同意。
第二轮(老印):
(leetcode) edit distance,以DP解之,喜。
(leetcode) word ladder,直接给出BFS,不喜,要优化,想了半天给出的答案皆不
喜,最后提示我可以双向BFS,时间不够,没有给出代码。
-----------------午饭-------------------
第三轮(老白)
给一个int的矩阵arr,让返回一个同样大小的result矩阵,每一个result[i][j] = arr
[i][j]及其所有左上方元素的和,DP解之,喜。问了各种test case,一一例举之。
(左上方元素定义:以arr[0][0]和arr[i][j]为对角线的矩阵的所有元素和)
第四轮(老印)
给两个int,第一个代表分子,第二个代表分母,让返回转化成小数后的string
循环位用括号括起来。例如:输入1,3,返回“0.(3)”。输入1,7,返回“0.(142857
)”;暴力解之,用一个LinkedList记录每次的余数,如果出现相同余数,则出现循环
,与前一个相同余数的距离就是循环的位数,插之以括号。喜。
第二题:判断两个二叉树结构相等(左右subtree可对调),递归解之,喜。
第五轮(老白)
(leetcode)search in rotated sorted array。直接背答案,条件二分。
----------------------------------------
一周后HR来电话说HC没过,追问details,拒绝告知,求各路大牛帮分析。 |
s********k 发帖数: 2352 | |
d******s 发帖数: 274 | 3 "暴力解之,用LL记录每次的余数,如果出现相同余数,则出现循环,与前一个相
同余数的距离就是循环的位数,插之以括号。喜。"
多谢分享,但是这里看不懂。LL是linked list? 什么是每次的余数,什么是相同的余
数则出现循环? |
b***r 发帖数: 4186 | 4 第五题今天我店面考到了。
【在 l*********r 的大作中提到】 : 背景:中部弱校master,去年五月毕业,刚工作一年(中部小公司),骑驴找马中。 : Onsite一共五轮: : -------------------------------------- : 第一轮(中东人): : 给一个字符串,让压缩并解压,压缩算法类似leetcode中的count and say : 输入:aabbbccd 压缩结果:2a3b2cd(注意,'d'前面没有'1') : 引申:输入中如果有数字的话,解压时需要注意歧义问题,例如2a可以解压为'2a'或 : 者'aa',问如何解决。答曰用类似ascii码中加反斜杠的做法,或者加个header来标 : 志压缩过的位,表示同意。 : 第二轮(老印):
|
g*********e 发帖数: 14401 | 5 感觉是不是做题速度还不够?
第三轮和第五轮都只做了一道简单题。是behavior花时间太多了么? |
b***r 发帖数: 4186 | 6 老印给的都不简单啊。
【在 l*********r 的大作中提到】 : 背景:中部弱校master,去年五月毕业,刚工作一年(中部小公司),骑驴找马中。 : Onsite一共五轮: : -------------------------------------- : 第一轮(中东人): : 给一个字符串,让压缩并解压,压缩算法类似leetcode中的count and say : 输入:aabbbccd 压缩结果:2a3b2cd(注意,'d'前面没有'1') : 引申:输入中如果有数字的话,解压时需要注意歧义问题,例如2a可以解压为'2a'或 : 者'aa',问如何解决。答曰用类似ascii码中加反斜杠的做法,或者加个header来标 : 志压缩过的位,表示同意。 : 第二轮(老印):
|
d******s 发帖数: 274 | 7 nvm 看懂了
【在 d******s 的大作中提到】 : "暴力解之,用LL记录每次的余数,如果出现相同余数,则出现循环,与前一个相 : 同余数的距离就是循环的位数,插之以括号。喜。" : 多谢分享,但是这里看不懂。LL是linked list? 什么是每次的余数,什么是相同的余 : 数则出现循环?
|
l****h 发帖数: 1189 | 8 既然HC了,说明你面试解题没问题。
小公司找大公司有劣势。HC应该是从学习和工作经历方面考虑得多一些。感觉运气也很
重要,比如这一批人选强人很多,你弱校,小公司他就直接给你下了。
my 2 cents
【在 l*********r 的大作中提到】 : 背景:中部弱校master,去年五月毕业,刚工作一年(中部小公司),骑驴找马中。 : Onsite一共五轮: : -------------------------------------- : 第一轮(中东人): : 给一个字符串,让压缩并解压,压缩算法类似leetcode中的count and say : 输入:aabbbccd 压缩结果:2a3b2cd(注意,'d'前面没有'1') : 引申:输入中如果有数字的话,解压时需要注意歧义问题,例如2a可以解压为'2a'或 : 者'aa',问如何解决。答曰用类似ascii码中加反斜杠的做法,或者加个header来标 : 志压缩过的位,表示同意。 : 第二轮(老印):
|
R******9 发帖数: 267 | 9 pat pat, 答得挺好的呀
【在 l*********r 的大作中提到】 : 背景:中部弱校master,去年五月毕业,刚工作一年(中部小公司),骑驴找马中。 : Onsite一共五轮: : -------------------------------------- : 第一轮(中东人): : 给一个字符串,让压缩并解压,压缩算法类似leetcode中的count and say : 输入:aabbbccd 压缩结果:2a3b2cd(注意,'d'前面没有'1') : 引申:输入中如果有数字的话,解压时需要注意歧义问题,例如2a可以解压为'2a'或 : 者'aa',问如何解决。答曰用类似ascii码中加反斜杠的做法,或者加个header来标 : 志压缩过的位,表示同意。 : 第二轮(老印):
|
B*******1 发帖数: 2454 | 10 hc看代码,俺们这里几hc的经常讨论呢。
【在 l****h 的大作中提到】 : 既然HC了,说明你面试解题没问题。 : 小公司找大公司有劣势。HC应该是从学习和工作经历方面考虑得多一些。感觉运气也很 : 重要,比如这一批人选强人很多,你弱校,小公司他就直接给你下了。 : my 2 cents
|
|
|
g*****i 发帖数: 2162 | 11 有3轮都只有一道题,是不是速度不够?
前两轮的引申和提示如果能自己一开始就主动提出来也会更好。 |
t*********7 发帖数: 255 | |
d********i 发帖数: 582 | 13 请问第四轮的分子,分母那题怎么做啊?LC的divide two numbers变种? |
a********m 发帖数: 15480 | 14 不。hc根据报告做决定,包括解题细节。
【在 l****h 的大作中提到】 : 既然HC了,说明你面试解题没问题。 : 小公司找大公司有劣势。HC应该是从学习和工作经历方面考虑得多一些。感觉运气也很 : 重要,比如这一批人选强人很多,你弱校,小公司他就直接给你下了。 : my 2 cents
|
h*u 发帖数: 122 | |
d******v 发帖数: 801 | |
T********n 发帖数: 152 | |
T*U 发帖数: 22634 | 18 hire committee
【在 T********n 的大作中提到】 : 同问HC是什么
|
x**i 发帖数: 2627 | 19 re
不。hc根据报告做决定,包括解题细节。
【在 a********m 的大作中提到】 : 不。hc根据报告做决定,包括解题细节。
|
U*********y 发帖数: 54 | 20 Sorry I don't understand your solution either. How do you prevent 3.
14159261415926... from returning '3.(14)' ('1' appears twice)?
It feels like this can be solved by converting the digits to a suffix array
(longest repeated substring).
【在 d******s 的大作中提到】 : "暴力解之,用LL记录每次的余数,如果出现相同余数,则出现循环,与前一个相 : 同余数的距离就是循环的位数,插之以括号。喜。" : 多谢分享,但是这里看不懂。LL是linked list? 什么是每次的余数,什么是相同的余 : 数则出现循环?
|
|
|
z********1 发帖数: 262 | 21 这种比较简单的原题可能要多关注解题过程,你果断背答案可能不太好。 |
l*********r 发帖数: 136 | 22 Hi, 下面是我当时的解法,如有不妥的地方请指正
首先,因为是两个integer做除法,所以不涉及无线不循环小数的问题,当然循环位可
能super long导致溢出,此处暂不考虑这种情况。
举个例子,1除以7:
除法 结果集 余数集
1 x 10 / 7 = 1 余 3
3 x 10 / 7 = 4 余 2
2 x 10 / 7 = 2 余 6
6 x 10 / 7 ...
...
循环,每次都用前一步得到的余数乘以10(如果除数大于10的话,这里需要乘以多个10
),然后除以除数,并用一个链表记录下余数,做完上面的三步之后,余数集(链表)
中应该存 3 -> 2 -> 6... 结果集(字符串)中存142...
当遇到相同余数的时候(请注意是余数集中出现duplicates,而不是结果集中),即可
判知有循环出现。循环位数就是链表中两个重复数字的距离,在相应位置插入括号即可。
array
【在 U*********y 的大作中提到】 : Sorry I don't understand your solution either. How do you prevent 3. : 14159261415926... from returning '3.(14)' ('1' appears twice)? : It feels like this can be solved by converting the digits to a suffix array : (longest repeated substring).
|
l*********r 发帖数: 136 | 23 请见22楼 =)
【在 d******s 的大作中提到】 : "暴力解之,用LL记录每次的余数,如果出现相同余数,则出现循环,与前一个相 : 同余数的距离就是循环的位数,插之以括号。喜。" : 多谢分享,但是这里看不懂。LL是linked list? 什么是每次的余数,什么是相同的余 : 数则出现循环?
|
l*********r 发帖数: 136 | 24 恩,第三轮和第五轮确实是做题偏少。其实我感觉这两轮做题的速度还可以,第三轮中
老美问了很多测试,直到结束。第五轮马上下班了,那老美心不在焉的样子,我也有点
累了,两个人就聊聊家常就稀里糊涂的过去了。。。
可是这个结果呈现到HC的时候,他们很可能“不明真相”地理解为“做题速度不够”,
这是个巨大的负面因素呀,唉,不是没可能。
【在 g*********e 的大作中提到】 : 感觉是不是做题速度还不够? : 第三轮和第五轮都只做了一道简单题。是behavior花时间太多了么?
|
l*********r 发帖数: 136 | 25 恩,第三轮和第五轮确实是做题偏少。其实我感觉这两轮做题的速度还可以,第三轮中
老美问了很多测试,直到结束。第五轮马上下班了,那老美心不在焉的样子,我也有点
累了,两个人就聊聊家常就稀里糊涂的过去了。。。
可是这个结果呈现到HC的时候,他们很可能“不明真相”地理解为“做题速度不够”,
这是个巨大的负面因素呀,唉,不是没可能。
谢谢你的建议!
【在 g*****i 的大作中提到】 : 有3轮都只有一道题,是不是速度不够? : 前两轮的引申和提示如果能自己一开始就主动提出来也会更好。
|
l*********r 发帖数: 136 | 26 我的解法请见22楼,呵呵,不对的地方请指正。
【在 d********i 的大作中提到】 : 请问第四轮的分子,分母那题怎么做啊?LC的divide two numbers变种?
|
y**********u 发帖数: 6366 | 27 G家实在太难了。。。
arr
【在 l*********r 的大作中提到】 : 背景:中部弱校master,去年五月毕业,刚工作一年(中部小公司),骑驴找马中。 : Onsite一共五轮: : -------------------------------------- : 第一轮(中东人): : 给一个字符串,让压缩并解压,压缩算法类似leetcode中的count and say : 输入:aabbbccd 压缩结果:2a3b2cd(注意,'d'前面没有'1') : 引申:输入中如果有数字的话,解压时需要注意歧义问题,例如2a可以解压为'2a'或 : 者'aa',问如何解决。答曰用类似ascii码中加反斜杠的做法,或者加个header来标 : 志压缩过的位,表示同意。 : 第二轮(老印):
|
r******g 发帖数: 138 | 28 对第四轮
public static String getDecimal(int a, int b){
if(a == 0)
return "0.0";
if(b == 0)
return "";
StringBuilder res = new StringBuilder();
res.append(a/b);
res.append(".");
int c = a;
HashMap mod = new HashMap();
ArrayList decimals = new ArrayList();
int index=0;
while(c%b !=0 && !mod.containsKey(c%b)){
mod.put(c%b, index);
c = c%b*10;
decimals.add(c/b);
index++;
}
if(c%b==0){
for(int i=0; i
res.append(decimals.get(i));
}
res.append("(0)");
}else{
index = mod.get(c%b);
for(int i=0; i
res.append(decimals.get(i));
}
res.append("(");
for(int i=index; i
res.append(decimals.get(i));
res.append(")");
}
return res.toString();
} |
g*********e 发帖数: 14401 | 29
pat pat
其实跟面试官交流太多都是浪费时间,短时间内给出正确最优解,争取多做几道最管用
。不过碰到有人用testcase死缠你,也没办法,稍微磨蹭磨蹭45分钟就过去了。
【在 l*********r 的大作中提到】 : 恩,第三轮和第五轮确实是做题偏少。其实我感觉这两轮做题的速度还可以,第三轮中 : 老美问了很多测试,直到结束。第五轮马上下班了,那老美心不在焉的样子,我也有点 : 累了,两个人就聊聊家常就稀里糊涂的过去了。。。 : 可是这个结果呈现到HC的时候,他们很可能“不明真相”地理解为“做题速度不够”, : 这是个巨大的负面因素呀,唉,不是没可能。 : 谢谢你的建议!
|
c*******2 发帖数: 60 | 30 请问G家店面挂了有冷冻期么
【在 l*********r 的大作中提到】 : 我的解法请见22楼,呵呵,不对的地方请指正。
|
|
|
S******1 发帖数: 216 | 31 //6:24 6:40
String divide(int a, int b) {
String res = "";
if (b == 0)
return res;
if (a == 0)
return "0";
if (a < 0 && b > 0 || a > 0 && b < 0)
res += "-";
a = a < 0 ? -a : a;
b = b < 0 ? -b : b;
res = res + Integer.toString(a/b) + ".";
a -= (a/b)*b;
Map posMap = new HashMap();
List arr = new ArrayList();
while (!posMap.containsKey(a)) {
posMap.put(a, arr.size());
arr.add((a*10)/b);
a = (a*10)%b;
}
int stopPos = posMap.get(a);
for (int i = 0; i < arr.size(); i++) {
if (i == stopPos)
res += "(";
res += Integer.toString(arr.get(i));
}
res += ")";
return res;
} |
d********i 发帖数: 582 | 32 解法: Fraction To Decimal结合Longest Substring Without Repeating Characters
变种
测试:
System.out.println(fractionToDecimal(2, 4)); // 0.5
System.out.println(fractionToDecimal(1, 3)); // 0.(3)
System.out.println(fractionToDecimal(1, 7)); // 0.(142857)
代码:
public static String fractionToDecimal(int numerator, int denominator) {
String res = "0.";
while (numerator != 0) {
int tmp = (numerator * 10) / denominator;
res = res + Integer.toString(tmp);
numerator = (numerator * 10) % denominator;
if (res.length() > 20) {
return "0." + "(" + longestSubstringWithoutRepeatingCharacters(res.
substring(2)) + ")";
}
}
return res;
}
public static String longestSubstringWithoutRepeatingCharacters(String s) {
boolean[] hash = new boolean[256];
int maxlen = 0;
int left = 0;
int right = 0;
while (right < s.length()) {
if (!hash[s.charAt(right)]) {
hash[s.charAt(right)] = true;
} else {
maxlen = Math.max(maxlen, right - left);
while (s.charAt(left) != s.charAt(right)) {
hash[s.charAt(left)] = false;
left++;
}
left++;
}
right++;
}
return s.substring(left - 1, right - 1);
} |