Google(youtube)新鲜电面面经

原帖地址:一亩三分地

前天电面的,不废话了, 直接上题:
给了一个UTF-8的pattern:
1byte – 0XXX, XXXX
2byte – 110X, XXXX, 10XX,XXXX
3byte – 1110, XXXX, 10XX,XXXX, 10XX,XXXX
4byte – 1111, 0XXX, 10XX,XXXX, 10XX,XXXX, 10XX,XXXX
…..
7byte – 1111, 1110, 10XX,XXXX, 10XX,XXXX, 10XX,XXXX, ….. 10XX,XXXX
8byte – 1111, 1111, 10XX,XXXX, 10XX,XXXX, 10XX,XXXX, ….. 10XX,XXXX

然后让写一个boolean 函数:
input: byte数组
output: trye or false;
boolean isvalidUTF-8(byte[] input){

}
做题前,问了问简历,然后问了问哪门课最changllege, 哪门课最喜欢。因为楼主没有实习经历,估计也没别的可问, why google之类的。然后就在doc上复制上这道题,一看就傻眼了,然后问了问byte数组里面是不是就是1和0,回答是。想啊想,貌似只能一位一位比,然后想半天,估计面试官比较无奈,又说给你一个函数leadingOnes,这个函数返回1的数目。这时候楼主开始犯二了,很自然的认为是返回所有1的个数。又在那想啊想,总觉得,给的这个函数没啥用,X可以为1啊。又问面试官能不能查api,用别的不用他给的函数,面试官说可以,去查了半天也没发现能用的(昨天才知道有bitset这种神器啊)。 然后时间就快到了,面试官说你何必不考虑用我给你的函数呢,我回答可是函数返回所有1的数目,X可以为1啊,很confused。 这会面试官的一句话,彻底把我打下了地狱,他说:leadingOnes是遇到0就停止继续往下找1了。我擦擦擦擦擦。 。 突然思路就来了,那不就是先判断前面1的个数,然后以8为单位开始扫input里面后面的字符,再查看前两个字符是不是10嘛。妈蛋的,啊啊啊。这会已经没时间写了,没写完,面试官说时间已经超时了,有没有什么问题想问我的。不得不说google面试水平就是高, 时间过了,还让问问题。可惜楼主被自己蠢哭了, 已经不会思考了。直接说了No, 面试官很礼貌的说我给你留个邮箱,你有事可以跟我联系。我噻,真是业界良心啊~~~今天收到电话, 挂的毫无悬念。进了小黑屋一年,怪自己太熊啊。 没怎么准备就敢投google。 至此第一阶段的找工作正式结束了,努力再去刷题吧。到九十月份再投。 哎~拿google练手,增长经验,我也真是。 小伙伴们,没准备好千万别投啊,内推回复速度神快啊,地里好多大大也说,google全年都在招人,准备好了再投啊。