Redian新闻
>
Verizon的samsung note3 N900V能用att的网络吗?谢谢了。
avatar
Verizon的samsung note3 N900V能用att的网络吗?谢谢了。# PDA - 掌中宝
m*w
1
电面, 中国大哥, 问了一题,就是给read4k,实现read any bytes. 读大文件时如何
优化
onsite:
1, 美国人, 给一个词,判断是不是Palindome,
然后扩展问,给一个字典,找出所有对 单词,这两个单词可以组成一个palindom,
然后有问,可以组合任意个单词,怎么找到最长的可能的palindom
2, 中国大哥, 问了 permutation 和几种变体
3, 问现在的项目和resume
4, 美国人, 系统设计,设计各系统能返回 top 10 listened songs from your
friends.
今天收到据信,说coding可以,但是design没过。感谢FB的中国大哥,可惜自己能力有
限。
avatar
h*g
2
Verizon的samsung note3 N900V 4G LTE合约机,想转到att,能用att的网络吗?如果
能,还能用4G网络吗?谢谢了。
avatar
y*n
3
read4k这题可不可讲一下,对我们这种文科生转行还是蛮难的。
avatar
p*m
4
No
[发表自未名空间手机版 - m.mitbbs.com]
avatar
z*a
5
Onsite 第一轮这题有什么好办法么,我只先到了brute force...而且任意个单词的时
候,如果有单词类似'a'这样的在字典里,那不是长度无上限了?
avatar
h*b
6
应该只能用att的4g hspa+,不能用4g lte

【在 h******g 的大作中提到】
: Verizon的samsung note3 N900V 4G LTE合约机,想转到att,能用att的网络吗?如果
: 能,还能用4G网络吗?谢谢了。

avatar
M*a
7
read4k 读大文件怎么优化啥意思
avatar
i*r
8
Verizon的LTE手机没锁GSM,应该能用。我把ptel卡插入version note3 合约机,可以
用4G LTE,当然需要自己设置一下APN。
avatar
M*a
9
比如bob这个词就可以 bobbobobobobobobob......bobob?
估计要规定不能重复用word。
或者就是所有找到的互为palindrome的word首尾相连就行了?

【在 z**a 的大作中提到】
: Onsite 第一轮这题有什么好办法么,我只先到了brute force...而且任意个单词的时
: 候,如果有单词类似'a'这样的在字典里,那不是长度无上限了?

avatar
z*a
10
应该是不能重复吧,不然第二问中找到的单词对就能组成无限长的palindrome string
了。
不过还是想不到有什么好办法啊。不知道LZ怎么回答的。

【在 M*******a 的大作中提到】
: 比如bob这个词就可以 bobbobobobobobobob......bobob?
: 估计要规定不能重复用word。
: 或者就是所有找到的互为palindrome的word首尾相连就行了?

avatar
M*a
11
所有找到的互为palindrome的word首尾相连就行了?

string

【在 z**a 的大作中提到】
: 应该是不能重复吧,不然第二问中找到的单词对就能组成无限长的palindrome string
: 了。
: 不过还是想不到有什么好办法啊。不知道LZ怎么回答的。

avatar
z*a
12
不一定要互为palindrome啊,“aba”,如果“a”,“ba“分别在字典里,他们的组合
也是合法的啊。
avatar
M*a
13
对我知道
可以再就是找一个word的reverse看是不是能有其他word组成,这就是常见的word
break面试题。
把word break和互为palindrome的联在一起就够长了吧
当然还有abcde, fghi, ihgfe, dcba的情况

【在 z**a 的大作中提到】
: 不一定要互为palindrome啊,“aba”,如果“a”,“ba“分别在字典里,他们的组合
: 也是合法的啊。

avatar
m*w
14
一个单词只能用一次,

【在 z**a 的大作中提到】
: Onsite 第一轮这题有什么好办法么,我只先到了brute force...而且任意个单词的时
: 候,如果有单词类似'a'这样的在字典里,那不是长度无上限了?

avatar
M*a
15
您老这题怎么答得?

【在 m**********w 的大作中提到】
: 一个单词只能用一次,
avatar
m*w
16
第二个问我说每两个单词连起来试下,他说要O(n)的,然后我说可以把所有单词建成个
Trie,然后在对把每个单词reverse 一下,去Trie找匹配的prefix, 如果找到并且剩下
的postfix还是palindorm就可以了,然后他说可以,就让我写了代码
至于第三问,我也没啥思路, 就说按刚才同样思路,找到一个prefix匹配后,拿剩下
的部分在去找,比如刚才那个例子,
abcde, fghi, ihgfe, dcba
dcba 匹配abcde, 还剩下e
fghi 匹配ihgfe, 也还剩下e,那然后这四个单词就可以连在一起了,就这样继续。
也没让写代码,

【在 M*******a 的大作中提到】
: 您老这题怎么答得?
avatar
f*n
17
居然还要system design。绝对无法过啊
avatar
j*8
18

这个剩下的postfix是什么意思?如果两个词可以组成palindorm的话,其中一个应该和
另外一个的reverse完全一样阿?

【在 m**********w 的大作中提到】
: 第二个问我说每两个单词连起来试下,他说要O(n)的,然后我说可以把所有单词建成个
: Trie,然后在对把每个单词reverse 一下,去Trie找匹配的prefix, 如果找到并且剩下
: 的postfix还是palindorm就可以了,然后他说可以,就让我写了代码
: 至于第三问,我也没啥思路, 就说按刚才同样思路,找到一个prefix匹配后,拿剩下
: 的部分在去找,比如刚才那个例子,
: abcde, fghi, ihgfe, dcba
: dcba 匹配abcde, 还剩下e
: fghi 匹配ihgfe, 也还剩下e,那然后这四个单词就可以连在一起了,就这样继续。
: 也没让写代码,

avatar
M*D
19
设计各系统能返回 top 10 listened songs from your
friends.
这个设计题有什么好的思路吗。。
我的想法:需要在每个朋友的歌单里面建立一个已听歌曲的list,然后计数,然后当我
去那数据的时候,尝试合并相同歌曲的counter,然后按counter排列?
这样子的话会形成相当庞大的数据(不管是存在cache还是存在db里),因为每首歌在
每个朋友那儿都有instance,有更好的思路吗
avatar
m*w
20
不一定要一样,比如 abcdefe 和 dcba 就是长度不一样,但连起来是palindorm

【在 j*****8 的大作中提到】
:
: 这个剩下的postfix是什么意思?如果两个词可以组成palindorm的话,其中一个应该和
: 另外一个的reverse完全一样阿?

avatar
r*k
21
干脆还是每个用户自己维护一个song的list
再维护一个朋友的song的list的aggregation
当用户播放一首歌,需要更新所有朋友的list
当两个人unfriend,自己的朋友list minus 朋友的自己的list

【在 M*****D 的大作中提到】
: 设计各系统能返回 top 10 listened songs from your
: friends.
: 这个设计题有什么好的思路吗。。
: 我的想法:需要在每个朋友的歌单里面建立一个已听歌曲的list,然后计数,然后当我
: 去那数据的时候,尝试合并相同歌曲的counter,然后按counter排列?
: 这样子的话会形成相当庞大的数据(不管是存在cache还是存在db里),因为每首歌在
: 每个朋友那儿都有instance,有更好的思路吗

avatar
c*r
22
多谢分享。
f确实是不简单啊。
能不能问问你设计题到底怎么答的?是不是说对任何一个脸书用户,返回他/她朋友听
过歌曲的top 10啊? 有哪些特殊的需求呢?
avatar
c*r
23
第一题第二问不知道可不可以这么考虑:
给定任何一个单词,向左或者向右扩展,使得原单词本身变为一个palindrome,然后用
hash table检查向左或者向右插入的单词是否在字典里? 如果原单词本身就已经是
palindrome了,那么就要特殊处理一下了。
不知道这题可不可以从这个里面学到点什么东西 : http://www.quora.com/Algorithms/What-are-different-algorithm-for-converting-a-string-into-palindrome-string-except-appending-the-reverse-of-same-string-method
只是大概思路,请多讨论指教。
另外,read4k实现 read any bytes的思路到底是怎么搞的? 这是老题,但是我是一头
雾水啊。多谢!
avatar
B*n
24
abcde 和 ffffedcba 可以组成 palindrom,
具体来说把ffffedcba reverse 得到 abcdeffff
然后在字典里找到abcde 剩下的postfix 就是 ffff, 是一个palindorm, 所以abcde 和
ffffedcba 可以组成 palindrom

【在 j*****8 的大作中提到】
:
: 这个剩下的postfix是什么意思?如果两个词可以组成palindorm的话,其中一个应该和
: 另外一个的reverse完全一样阿?

avatar
S*1
25
楼主这个面经我感觉电面我就挂了,
FB面试难度的variance很大啊!
avatar
t*e
26
电面那题,网上看到一种解法,这是正解么?
我有点不明白的是假如只有200bytes, 通过read4096之后是不是应该返回200(<4096)
作为结果?
public class read_4096_bytes {
public int read4096(char[] buf) {
return 4096;
}
public int read(int n, char[] buf) {
int totalRead = 0;
for (int i = 0; i < n / 4096; ++i) {
char[] tbuf = new char[4096];
int tRead = read4096(tbuf);
totalRead += copyTo(buf, totalRead, tbuf, tRead);
if (tRead < 4096) {
return totalRead;
}
}
char[] tbuf = new char[4096];
int tRead = read4096(tbuf);
totalRead += copyTo(buf, totalRead, tbuf, Math.min(tRead, n % 4096));
return totalRead;
}
private int copyTo(char[] buf, int start, char[] tbuf, int num_read) {
for (int i = 0; i < num_read; ++i) {
buf[start + i] = tbuf[i];
}
return num_read;
}
}
avatar
U*A
27
read4K读打文件优化怎么搞?
avatar
m*w
28
如果只读200byte,那么剩下的就要buffer起来等下次读

【在 t*******e 的大作中提到】
: 电面那题,网上看到一种解法,这是正解么?
: 我有点不明白的是假如只有200bytes, 通过read4096之后是不是应该返回200(<4096)
: 作为结果?
: public class read_4096_bytes {
: public int read4096(char[] buf) {
: return 4096;
: }
: public int read(int n, char[] buf) {
: int totalRead = 0;
: for (int i = 0; i < n / 4096; ++i) {

avatar
m*w
29
我开始写的代码跟楼上的一个兄弟写的类似,就是总是先读到local buffer里再copy到
目标buffer里。
其实对于一次读很多byte的,比如read(4GB),只是最开始的一些bytes和结尾的bytes需
要通过local buffer转存下,其他的直接循环调用read4k直接读就行了。
当然他给我的函数原型都是用C写的,牵涉到buffer copy,不知道Java下是不是就没这
个问题了

【在 U***A 的大作中提到】
: read4K读打文件优化怎么搞?
avatar
U*A
30
那个palindome第三问怎么搞?很难想明白。
avatar
W*y
31
mark
avatar
l*s
32
我随手写了点java code,不知道对不对,其实就是需要个4K bytes的临时buffer暂存
一下。
// Given read4K(char[] buffer)
int read(char[] array, int N) {
char[] buffer;
int start = 0;
int end = 0;
int p = 0;
array = new char[N];
while (N > 0) {
if (start == end) { // Read next 4K bytes
start = 0; end = read4K(buffer);
}
if (end == 0) break;
int size = Math.max(N, end - start);
for (; start < size; start++) array[p++] = buffer[i];
N -= size;
}
}
但我不理解楼主提到的大文件优化问题,楼主能不能展开说说。

【在 m**********w 的大作中提到】
: 如果只读200byte,那么剩下的就要buffer起来等下次读
avatar
l*s
33
对于onsite第一题,我的思路是:
1. Create a HashMap for dictionary.
2. for each word, find its palindrome substring started with, and check if
the reverse
of the rest substring exists in the HashMap
比如"cbcab",它的starting palindrome substring是"cbc",然后在dictionary里查
找"ba"。
avatar
s*i
34
设计题像LRU
avatar
t*e
35
总共只有200 bytes, 读完之后为什么还有剩下的?

【在 m**********w 的大作中提到】
: 如果只读200byte,那么剩下的就要buffer起来等下次读
avatar
m*w
36
你这句:
array[p++] = buffer[start++];
假设N = 4GB, 那就是要把4GB内容先都拷贝到buffer, 然后再从buffer拷贝到array.
实际上不需要,大多数内容可以直接让read4k读到目标array里,不需要经过buffer,
减少一次memcpy.

【在 l********s 的大作中提到】
: 我随手写了点java code,不知道对不对,其实就是需要个4K bytes的临时buffer暂存
: 一下。
: // Given read4K(char[] buffer)
: int read(char[] array, int N) {
: char[] buffer;
: int start = 0;
: int end = 0;
: int p = 0;
: array = new char[N];
: while (N > 0) {

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