Redian新闻
>
最郁闷的facebook面试+面经。
avatar
最郁闷的facebook面试+面经。# JobHunting - 待字闺中
t*3
1
电话面试,前4分钟让我介绍我自己。然后开始用collabedit。 我创建的他说看不到。
我再创建一个。 告诉他。 他说只有他一个人在里面。 于是他说他创建一个, 发给
我。 gmail delay了两三分钟都没有收到他发的Email。 于是我再创建了一个。他终于
能看到了。 这时过去了8,9分钟了。
终于开始用collabedit写code。他先给我写了一个输入输出
"this is a sentence" => [t, h, i, s, i, s, a, s, e, n, t, e, n, c, e]
"thiis iss a senntencee" => [i, s, n, e]
"thiisss iss a senntttenceee" => [s, t, e]
"thiisss iss a sennnntttenceee" => [n]
让我猜他要出的问题是什么。 我想了一会,猜对了。 就是要输出count最多的连续的
字符。他说差不多。 问我想怎么写。 我就说先扫描一遍找出最大的count,然后再
scan一遍。 把count相等的都给输出。 他说好。 就让我开始写代码。这时候我估计已
经过去18分钟了。
我写到13行。 他说只看到我写到第8行(也就是刚开始。)
问我是不是在想。 然后一会大概17行的时候, 就说我已经offline了。
于是我拷了代码。 重新开了一个collabedit。我写到大概第30行。 他说看到我在第18
行就不动了。 问我是不是我在边上打草稿。我说我写到了30行。 他说那好吧。 等你
写完了再告诉我。 我本来想跟他说说我在写什么。 他说你是不是写完了。 我说还没
有。 他说那你写完了再跟我说。 他说看不到我在写什么。
我就不说话继续写。 他说看到我已经offline了。让我重新创建一个。 我就点了一些
new. 然后所有代码都没有了。
这个时候时间已经过去28,29分钟了。 他就说那我问你一遍别的东西吧。
你给说说时间空间复杂度吧。 然后就是说有什么办法来改进一下。 我说了一个
hashmap方法来改进。后来发现并不能改进。 我就换了一个hashmap方法。发现可以改
进一点。 这个时候又10分钟过去了。他又让我问他问题。 我问了两三个问题。 就只
剩下6分钟了。 我说我真地很想把code写出来。 他说那你想写就写。 后来我还是没有
写。他就让我继续问他问题。
他说我这里有一部分你的代码。(我不知道他有多少我的代码。 估计是只有前18行。
) 我把feedback都写过去。 让recruiter来决定。
这样我的面试就结束了。
以前保持了近20轮电话面试(拿到8个onsite),电话面试从来没有失败的我个人记录

这次电
面估计是挂掉了。
avatar
l*i
2
collaedit has been very unstable for quite sometime
avatar
x*w
3

"近20轮电话面试(拿到8个onsite),电话面试从来没有失败的个人记录"
......

【在 t*******3 的大作中提到】
: 电话面试,前4分钟让我介绍我自己。然后开始用collabedit。 我创建的他说看不到。
: 我再创建一个。 告诉他。 他说只有他一个人在里面。 于是他说他创建一个, 发给
: 我。 gmail delay了两三分钟都没有收到他发的Email。 于是我再创建了一个。他终于
: 能看到了。 这时过去了8,9分钟了。
: 终于开始用collabedit写code。他先给我写了一个输入输出
: "this is a sentence" => [t, h, i, s, i, s, a, s, e, n, t, e, n, c, e]
: "thiis iss a senntencee" => [i, s, n, e]
: "thiisss iss a senntttenceee" => [s, t, e]
: "thiisss iss a sennnntttenceee" => [n]
: 让我猜他要出的问题是什么。 我想了一会,猜对了。 就是要输出count最多的连续的

avatar
b*n
4
"近20轮电话面试(拿到8个onsite),电话面试从来没有失败的个人记录"
赞这个,lz太牛了,即使这个挂了也不愁offer吧
avatar
z*o
5
"近20轮电话面试(拿到8个onsite),电话面试从来没有失败的个人记录"
??
avatar
G*A
6
第一题应该one pass就能搞定

【在 t*******3 的大作中提到】
: 电话面试,前4分钟让我介绍我自己。然后开始用collabedit。 我创建的他说看不到。
: 我再创建一个。 告诉他。 他说只有他一个人在里面。 于是他说他创建一个, 发给
: 我。 gmail delay了两三分钟都没有收到他发的Email。 于是我再创建了一个。他终于
: 能看到了。 这时过去了8,9分钟了。
: 终于开始用collabedit写code。他先给我写了一个输入输出
: "this is a sentence" => [t, h, i, s, i, s, a, s, e, n, t, e, n, c, e]
: "thiis iss a senntencee" => [i, s, n, e]
: "thiisss iss a senntttenceee" => [s, t, e]
: "thiisss iss a sennnntttenceee" => [n]
: 让我猜他要出的问题是什么。 我想了一会,猜对了。 就是要输出count最多的连续的

avatar
b*7
7
练习下,贴段code
string maxcountchars(const string & str)
{
vector r;
int count = 0;
int start = 0;
while(start < str.length() && str[start] == ' ') start++;
for(int j = start+1; j < str.length();)
{
if(str[j] != str[start])
{
count = max(count, j-start);
while(jstart = j;
}
else
{
j++;
}
}
count = max(count, (int)str.length() - start);
start = 0;
while(startfor(int j = 0; j < str.length(); )
{
if(str[j] != str[start])
{
if(j-start == count)
{
r.push_back(str[start]);
}
while(jstart = j;
}
else
{
j++;
}
}
if((int)str.length() - start == count)
{
r.push_back(str[start]);
}
return string(r.begin(),r.end());
}
avatar
l*n
8
他那么说就代表挂了么
avatar
t*3
9
这是一个只scan一遍就可以的java code.
public static ArrayList maxRep(String s) {
if (s == null){
return null;
}
ArrayList al = new ArrayList();
int len = s.length();
if (len == 0) {
return al;
}
int max = 1;
int count = 1;
for (int i = 1; i < len; i++) {
if (s.charAt(i) == ' ' || s.charAt(i) != s.charAt(i - 1)) {
if (count < max) {
count=1;
continue;
} else if (count > max) {
max=count;
al = new ArrayList();
al.add(s.charAt(i - 1));
count=1;
} else if (s.charAt(i - 1) != ' '){
al.add(s.charAt(i - 1));
count = 1;
}
}else{
count++;
}

}


if(count > max) {
al = new ArrayList();
al.add(s.charAt(len-1));
}
if(count == max) {
if(s.charAt(len-1)!=' ') {
al.add(s.charAt(len-1));
}
}

return al;
}
avatar
s*n
10
这题15行代码就搞定了吧。
avatar
l*8
11
collabedit好像经常出这种问题
我有次也是, 面试官看不到我的最新版本。有次我敲完代码,马上发现有个小bug,顺
手就改好了。 结果面试官那边显示的是没改的版本,一直说我程序有bug,我找啊找。
。。。

【在 t*******3 的大作中提到】
: 电话面试,前4分钟让我介绍我自己。然后开始用collabedit。 我创建的他说看不到。
: 我再创建一个。 告诉他。 他说只有他一个人在里面。 于是他说他创建一个, 发给
: 我。 gmail delay了两三分钟都没有收到他发的Email。 于是我再创建了一个。他终于
: 能看到了。 这时过去了8,9分钟了。
: 终于开始用collabedit写code。他先给我写了一个输入输出
: "this is a sentence" => [t, h, i, s, i, s, a, s, e, n, t, e, n, c, e]
: "thiis iss a senntencee" => [i, s, n, e]
: "thiisss iss a senntttenceee" => [s, t, e]
: "thiisss iss a sennnntttenceee" => [n]
: 让我猜他要出的问题是什么。 我想了一会,猜对了。 就是要输出count最多的连续的

avatar
l*8
12
15行算上括号空行什么的吗?
我写不出15行的程序啊。您能不能贴代码,我学习一下? 多谢了!

【在 s*******n 的大作中提到】
: 这题15行代码就搞定了吧。
avatar
s*n
13
嗯,算括号17行,我就是把楼主的代码改了一下。。。

【在 l*********8 的大作中提到】
: 15行算上括号空行什么的吗?
: 我写不出15行的程序啊。您能不能贴代码,我学习一下? 多谢了!

avatar
e*i
14
Here is c++ version. Have to admit is over 15 lines.
Any suggestions to improve?
/*****************************************/
#include
#include
#include
using namespace std;
void maxRep(char *s)
{
int maxFreq=0;
int counter=0;
vector charList;
vector freqList;

char target=*s;
do{
if(*s!=target)
{
if( counter>=maxFreq && isalpha(target) )
{
maxFreq=counter;
charList.push_back(target);
freqList.push_back(counter);
}
target=*s;
counter=1;
}
else counter++;
} while(*s++);
for(int i=0;iif(freqList[i]==maxFreq) cout<cout<}
int main()
{
//char s[]="this is a sentence";
//char s[]="thiis iss a senntencee";
//char s[]="thiisss iss a senntttenceee";
char s[]="thiisss iss a sennnntttenceee";
maxRep(s);
}
avatar
l*8
15
我怎么写都是二十几行。
能不能分享一下你的代码啊?

【在 s*******n 的大作中提到】
: 嗯,算括号17行,我就是把楼主的代码改了一下。。。
avatar
J*a
16
练一个
public static ArrayList maxConsecutiveRep(String s){
if(s == null || s.length() == 0) return null;
int max = 1;
int count = 1;
ArrayList rl = new ArrayList();
if(s.charAt(0) != ' ') rl.add(s.charAt(0));

for(int i = 1; i < s.length(); i++){
char cr = s.charAt(i);
if(cr == ' ') continue;
if(cr == s.charAt(i-1)) count++;
else count = 1;
if(max == count) rl.add(cr);
if(max < count){
max = count;
rl.clear();
rl.add(cr);
}
}
return rl;
}
avatar
J*a
17
行数少很简单的。。 把我上面那个代码空的一行去掉
char cr = ..那行可以不要 稍微改一下
rl.clear()那行也可以不要,下面一行稍微改一下
这样就包括括号17行

【在 l*********8 的大作中提到】
: 我怎么写都是二十几行。
: 能不能分享一下你的代码啊?

avatar
r*n
18
one scan solution.
using namespace std;
void mostRepeatedChar(const string& s){
if(s.size()<2){
cout<return;
}
int count = 1;
int maxCount = -1;
string result;

for(int i=1; iif(s[i] == s[i-1]&& i!=s.size()-1){
count++;
continue;
}else{
if(count>maxCount){
maxCount = count;
result.clear();
result += s[i-1];
}else if(count == maxCount){
result += s[i-1];
}
count = 1;//reset
}
}
cout<
}

【在 t*******3 的大作中提到】
: 电话面试,前4分钟让我介绍我自己。然后开始用collabedit。 我创建的他说看不到。
: 我再创建一个。 告诉他。 他说只有他一个人在里面。 于是他说他创建一个, 发给
: 我。 gmail delay了两三分钟都没有收到他发的Email。 于是我再创建了一个。他终于
: 能看到了。 这时过去了8,9分钟了。
: 终于开始用collabedit写code。他先给我写了一个输入输出
: "this is a sentence" => [t, h, i, s, i, s, a, s, e, n, t, e, n, c, e]
: "thiis iss a senntencee" => [i, s, n, e]
: "thiisss iss a senntttenceee" => [s, t, e]
: "thiisss iss a sennnntttenceee" => [n]
: 让我猜他要出的问题是什么。 我想了一会,猜对了。 就是要输出count最多的连续的

avatar
l*8
19
谢谢。 这样啊。 那就不用追求行数少了。
你的程序,我的格式是这样的: 不算空行,加上括号的话27行。
public static ArrayList maxConsecutiveRep(String s){
if(s == null || s.length() == 0)
return null;
int max = 1;
int count = 1;
ArrayList rl = new ArrayList();
if(s.charAt(0) != ' ')
rl.add(s.charAt(0));

for(int i = 1; i < s.length(); i++){
char cr = s.charAt(i);
if(cr == ' ')
continue;
if(cr == s.charAt(i-1)) {
count++;
} else {
count = 1;
}
if(max == count) {
rl.add(cr);
} else if(max < count){
max = count;
rl.clear();
rl.add(cr);
}
}
return rl;
}

【在 J*****a 的大作中提到】
: 行数少很简单的。。 把我上面那个代码空的一行去掉
: char cr = ..那行可以不要 稍微改一下
: rl.clear()那行也可以不要,下面一行稍微改一下
: 这样就包括括号17行

avatar
J*9
20
高手很多呀
看起来容易, 写起来难
It must be two passes unless you copy things to another array or list.
Here's my version in C:
void hkStringPrintMaxCounts(char *s)
{
if (!s || !(*s)) return;
int table[256] = {0};
char *p = s;
int max=1;
int count=1;
int index=0;
char c=*p;
printf("%s():\n", __FUNCTION__);
/// First pass: count and find max
while(*p)
{
c=*p;
count=0;
while(*p == c)
{
count++;
p++;
index++;
}
if (count>=max)
{
max = count;
table[index-1] = count;
}
}
printf("max=%d\n", max);
/// Second pass: print each max alphabet only once
p=s;
index=0;
printf("[");
while(*p)
{
//printf("table[%d/%c]=%d\n", index, *p, table[index]);
c=*p;
if((table[index]==max)&&(isalpha(c)))
printf("%c,", c);
p++;
index++;
}
printf("]\n");
}
str='this is a sentence'
hkStringPrintMaxCounts():
max=1
[t,h,i,s,i,s,a,s,e,n,t,e,n,c,e,]
str=' thiis iss a senntencee'
hkStringPrintMaxCounts():
max=2
[i,s,n,e,]
str='thiisss iss a senntttenceee'
hkStringPrintMaxCounts():
max=3
[s,t,e,]
str='thiisss iss a sennnntttenceee'
hkStringPrintMaxCounts():
max=4
[n,]
avatar
J*9
21
This one is pretty cool.

【在 e*******i 的大作中提到】
: Here is c++ version. Have to admit is over 15 lines.
: Any suggestions to improve?
: /*****************************************/
: #include
: #include
: #include
: using namespace std;
: void maxRep(char *s)
: {
: int maxFreq=0;

avatar
e*i
22
Here is shorter version after incorporated some tricks posted by others
/************************/
#include
#include
#include
using namespace std;
void maxRep(char *s)
{
int maxFreq=0;
int counter=0;
string result;
char target=*s;
do{
if(*s!=target)
{
if( counter >= maxFreq && isalpha(target) ){
if(counter>maxFreq) result.clear();
result+=target;
maxFreq=counter;
}
target=*s;
counter=1;
}
else counter++;
} while(*s++);
cout<}
int main()
{
char s[]="this is a sentence";
//char s[]="thiis iss a senntencee";
//char s[]="thiisss iss a senntttenceee";
//char s[]="thiisss iss a sennnntttenceee";
maxRep(s);
}
avatar
x*0
23
mark
avatar
u*g
24
如果大小写算不同字母的话one pass?
vector mostLetter(const string& s) {
int l = 0;
int maxlen = 0;
vector ans;
while (l < s.length()) {
while (!isAlphabet(s[l]) && l < s.length()) ++l;
int c = l;
while (c < s.length() && (s[c] == s[l])) ++c;
if (maxlen == c - l)
ans.push_back(s[l]);
if (maxlen < c - l) {
ans.clear();
ans.push_back(s[l]);
maxlen = c - l;
}
l = c;
}
return ans;
}
avatar
p*o
25
def foobar (string):
result = []
prev_char = ' '
maxlen = 0
consecutive_length = 1
for char in string + ' ':
if char == prev_char:
consecutive_length += 1
else:
if consecutive_length == maxlen:
if prev_char != ' ':
result.append(prev_char)
elif consecutive_length > maxlen:
if prev_char != ' ':
result = [prev_char]
maxlen = consecutive_length
consecutive_length = 1
prev_char = char
return result
print foobar("this is a sentence")
print foobar("thiis iss a senntencee")
print foobar("thiisss iss a senntttenceee")
print foobar("thiisss iss a sennnntttenceee")
C:\>python foobar.py
['t', 'h', 'i', 's', 'i', 's', 'a', 's', 'e', 'n',
't', 'e', 'n', 'c', 'e']
['i', 's', 'n', 'e']
['s', 't', 'e']
['n']
avatar
p*o
26
往前翻了一下,one-pass 的算法都是一样的。
其实本来就是暖手的练习题,玩不出什么花样来。
avatar
z*3
27
public static List getMaxSequentChars(String string){
List l = new ArrayList();
int cn = 0, max=0;
char pre = 0;
for(int i=0;iif(string.charAt(i)==pre){
cn++;
if(cn>max){
l.clear();
max = cn;
}
}else{
cn =0;
}
if(cn>=max){
if(string.charAt(i)!=' ') l.add(string.charAt(i));
}
pre = string.charAt(i);
}

return l;
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。