i*******6 发帖数: 107 | 1 第一题我用的blizzard专利算法3-way hash,取string的hashcode作为index再做3次
hash,不知道的可以查询一下,网上有介绍的。另外用了bit-vector,给他算了下1G内
存最多只能支持多少多少个字符串,他说够了。那我就直接写代码。不过中间脑子昏了
算法复杂度搞错了,我说是 nlogn他提醒我说其实是n,我说哦哦不好意思我搞错了,
不晓得会不会扣分。
第二题嘛直接二分查找,int binarysearch(int[]array, int start, int end, int
target)函数返回值代表的意思是:“这段从start-end的字符串里面 包括了多少个
target”,直接加起来就是了。 |
|
C***U 发帖数: 2406 | 2 如果能把返回值改一下的话 可以用recursion做 |
|
|
p****n 发帖数: 148 | 4 返回值是什么意思?
一会儿 return minv+k
一会儿 return abs(minv-x);
下 |
|
p****n 发帖数: 148 | 5 但你的返回值到底是什么意思呢?
最佳子数组的元素的和?
怎么猜似乎都和你的程序不符 |
|
x*******5 发帖数: 152 | 6 谢谢指正,修正两个bug,原始程序中只考虑了vector s[j]-s[i],也就是位于i和j之
间的subarray,person同学给出的test case 是[0,i]之间的subarray,程序修正如下
def Subvector_Zero(v):
"find the subvector whose sum is close to zero"
s=[0 for a in range(len(v))]
s[0]=v[0]
for i in range(1,len(v)):
s[i]=v[i]+s[i-1]
s=sorted(s)
minv=sys.maxint
for i in range(1,len(v)):
minv=min(minv,abs(s[i]-s[i-1]))
for c in s:
minv=min(minv,abs(c))
return minv
返回值是离0的最近距离
test case
v=[11,-30,-... 阅读全帖 |
|
|
|
G******i 发帖数: 5226 | 9 ☆─────────────────────────────────────☆
lanmao (懒猫) 于 (Sat Jul 9 11:29:24 2011, 美东) 提到:
(坑已经够大了,只管挖不管填不道德,俺自个合集了。)
看了芙蓉的减肥照片和凤姐的励志围脖,也想来跟个励志潮流。满版上都是google
amazon facebook,搞得不是编程熟手不会脑筋急转弯就没好工作似的。 俺来贴个BSO
的Java面经吧,来鼓励一下正在奋斗着的童鞋们。认识俺的都不要说啊,俺那么低调~~~
个人背景:人工智能方向的,学校算top 50吧,9月答辩,读了整整八年的老博士马上
就要新鲜出炉啦!
先低调的说一下amazon经历。amazon给俺发信三四次,要求俺去面试,没理。HR打电话
过来说为啥不理,俺说你们招聘职位太entry level,没兴趣。HR说那给你找个高层次
点的职位。过两天打电话来,说有个高级程序员的活,能不能给我们的hiring manager
一个向你展示我们项目产品的机会。俺心想,说得好听,还不是又要问那种脑筋急转弯
问题,反正答不出,没必要耽误时间。于是很彪... 阅读全帖 |
|
s***5 发帖数: 2136 | 10 prototype就是返回值,参数列表,函数名。
想来想去,就只能加个inline,const什么的。真是SB公司啊。 |
|
h****n 发帖数: 2094 | 11 一般都是object array吧。如果是int array return index is good enough...
cast |
|
|
i****1 发帖数: 445 | 13 public void insert (int value) {
rInsert (value, root);
}
private void rInsert (int value, BSTNode node) {
if (node == null) {
node = new BSTNode (value);
} else if (value < node.value) {
rInsert (value, node.left);
} else if (value > node.value) {
rInsert (value, node.right);
}
}
This approach will work in some programming
languages ... but not Java.
不知为为何上面的程序错了?我看挺好的,为何会出错。
而且答案是java里rinsert()函数需要返回值,如private BSTNode rInsert (int
value
, BSTNode node).
这时为何? |
|
|
l*****a 发帖数: 559 | 15 怎么做都是lg(n)。
n为该数十进制的值,
bit的个数为lg(n)。 |
|
l*****a 发帖数: 559 | 16 碰上一个未知位数的值,如何初始化mask?
对于int,long long等已知type,mask 都是hard coded的。
修改:看道题目说是整数,算是已知type的。 |
|
|
l*******b 发帖数: 2586 | 18 要在原数组上做,函数就不要返回值了呀。如果插入的区间基本随机,in place 一样
要写很多数据。vector 本身分配就是用了富余空间的,所以这个问题大约不在乎in
place 吧 |
|
d*********g 发帖数: 154 | 19 要传递引用的话貌似可以用int[] k = new int[1]:
public void findKthNode(TreeNode root, int[] k){
if (root == null) return ;
findKthNode(root.left, k);
k[0]--;
if (k[0] == 0)
System.out.println(root.val);
findKthNode(root.right, k);
}
或者可以加一个返回值(现写的,没测过,大家看看对不对):
public int findKthNode(TreeNode root, int k)
{
if(root == null) return k;
int leftK = findKthNode(root.left, k);
--leftK;
if(leftK == 0)
System.out.println(root.val);
int rightK = findKthNo... 阅读全帖 |
|
f*******7 发帖数: 943 | 20 题目一出,我就傻眼了,就知道完蛋了。。。
这题目正好是隔壁BB Onsite面经第二题
给一个表达式,计算返回值,不带括号
例子
"7-12/6"
"1000-5*6/3*2+1"
写了半天,问对方,对吗? 多方说,你说呢。。。
祝大家好运吧,哪个大牛给个链接 |
|
f*******7 发帖数: 943 | 21 题目一出,我就傻眼了,就知道完蛋了。。。
这题目正好是隔壁BB Onsite面经第二题
给一个表达式,计算返回值,不带括号
例子
"7-12/6"
"1000-5*6/3*2+1"
写了半天,问对方,对吗? 多方说,你说呢。。。
祝大家好运吧,哪个大牛给个链接 |
|
i******s 发帖数: 301 | 22 来自主题: JobHunting版 - T电面面经 好吧,那是因为你练过吧。否则最后那个if else确定返回值的时候不容易想对吧,而
且解释正确性也要花点时间。hashtable代码是略长,不过简单直接啊,而且多次查询
有优势。我是问了interviewer他想要那种,他说那你用hashtable吧 |
|
p*****p 发帖数: 379 | 23 你这在C++里也不行啊,除非你把函数参数定义成引用
removeNode(Node * &toRemoved)
这样的
java里可以把返回值定义成Node
if (toRemoved == null) return null;
if (toRemoved->next == null) return null;
toRemoved->next = removeNode(toRemoved->next);
return toRemoved;
你光把最后一个node改成null只是影响了局部变量而已,上一个node的next还是原来的
指向
list |
|
w****a 发帖数: 710 | 24 10分钟面经系列,这次是T家。
上次FB二面终于如期收到拒信,move on了。T家的一面希望大家bless啊。
刚开始给我一分钟时间问了我两个behavior问题,一个是我现在在做什么,一个是why
T家。
然后就开collabedit了,就写了一道题。题很简单,板上的XDJM们相信都能秒杀。
给一个多叉树和一个节点,求出这个节点所有path下来的数字的和。比如给出树和节点
4
4
/ \
2 1
\
3
答案就是413+42 = 455。
这个题倒没什么,拿到就问了他需不需要考虑big int的问题,他说不需要,int肯定够
用。那就放心写了。写完之后我怕有bug在纸上反复写各种test验证。他问我干啥,我
就说我在做“单元测试”。他就让我别在纸上画了直接在collabedit上写。我就把他给
的sample用函数流程走了一遍。。
随后就是一系列的follow up。我一开始给的解不是最优解(犯2了,啥也没想上来先用
了vector存所有路径下的数字,最后我逐个相加)。他也没说什么,因为代码本身没问
题,就是跟我说让我说出时间复杂... 阅读全帖 |
|
t****a 发帖数: 1212 | 25 表达式包含三种元素:
数字:简单起见仅仅考虑整数
运算符:分为单目和双目运算符两类,单目运算符比如负号。运算符有优先级,^ > */
> +-
括号:括号可以改变计算的优先级
要求写一个算法,可以计算表达式比如 (1+2)*3/4^5
为了方便解析,表达式中所有的相邻元素用空格分开,比如( 1 + 2 ) * 3 / 4 ^ 5
如果表达式有错误那么就报错,否则返回计算结果
怎么做? |
|
b****g 发帖数: 192 | 26 how does HashMap works in Java?
我不明白问题是什么意思,他让我以put(key,value)为例,我就说用key算出
bucket的位置,把value存进去。
他就继续问我怎么用key算出存在hash表的位置。
这才明白他是在问我Java HashMap怎么计算hash value.跟他确认了一下,就是这个意
思。
我说就是用hash function算,他又问我到底是怎么算的,总之就是问得很细致,看样
子是要求我看过代码才行。
面试结束后,我按了一下这个页面
http://www.docjar.com/html/api/java/util/HashMap.java.html
不知道是不是源代码。
又找了一下hash函数,就是移位异或操作。
hash函数的输入参数是把key用hashCode函数计算成一个整数。hashcode的返回值实际
是object的address。
可是,java不是不能找地址吗?
我看了代码,不过hashCode函数前面有个native关键字,意思是用其他语言写的函数。
看来java里用别的语言写的函数来找对象地址了。
谁能找到... 阅读全帖 |
|
|
|
a********n 发帖数: 1287 | 29 偶的意思是不局限于leetcode。
即使是写代码,也有什么时候 exception, assert
和返回值的问题。
实际上MS问过这个题。 |
|
c*****4 发帖数: 1777 | 30 建二叉树的过程就是等于排序的过程吧?建二叉树需要额外的空间。对面试者而言方案
不够优化。我觉得面试者希望你回答快速排序,无需额外的空间。他们会说如果是大数
据,你没有足够的存储空间缓存所需的数据。举例说这个序列可以是1万亿个。
如果是谷歌面试,或者是L4面试,在大数据情况下有些特殊的近似算法(因为谷歌用得
最多,因为谷歌的数据”比较大“)。在多少置信度下返回值(真/假)是正确的。大
数据排序不现实。 |
|
f********4 发帖数: 988 | 31 recursive本身就是压栈啊
从进入一个函数开始,就开始压栈。。
有变量压变量,有函数压函数。。
你这么想,你先遇到root node。。这个要压栈吧
然后你是不是call这个function,但是传left node。。
进入这个函数,是不是又要压栈,这不就是压的新的root就是left node。。,然后是
这个left node 的leftnode 等等等等。直到没有,这时候你pop了一个。。因为有一个
有返回值了,可以去下一行了。。但你很快发现你遇到了call rightnode的那个
function,。。。所以对这个function,你又开始做一遍和上面同样的事情。。。看不
懂就当我在胡言乱语吧。。 |
|
r*******e 发帖数: 7583 | 32 来自主题: JobHunting版 - A家面试题 既然返回值是vector,celebrity可能不止一个
你的做法是默认一个吧 |
|
r*******e 发帖数: 7583 | 33 来自主题: JobHunting版 - A家面试题 是的,默认应该是你这样理解
但是如果celebrity之间的关系不算的话,就不一样
只是觉得题目的返回值用vector有点奇怪 |
|
b******7 发帖数: 92 | 34 来自主题: JobHunting版 - A家面试题 celebrity要么有一个,要么没有。给你这样的返回值可能是考察你是否想到这一点。 |
|
h********0 发帖数: 74 | 35 int read4096(byte[] block_buffer) 是出题人提供的一个方法, 它每次从文件里读出
4k的数据放到 block_buffer里, 有时候没有4k, 所以需要用方法返回值记录 实际有的
byte number. |
|
z*******3 发帖数: 13709 | 36 前提是别人得给你一个random函数
如果不给你,这题没法做
一般来说这个random函数有两个返回值
0或者1
这是统计题,很无趣的说 |
|
b****g 发帖数: 192 | 37 请教一下
我按照你的方法写,发现 d_iter != d_container.end(); 这里永远是不相等。
于是我单步调试发现end()的返回值为负数。而d_iter是从0开始逐步加1。于是上
面的不等式永远成立。
请问这是怎么回事? |
|
f*****e 发帖数: 210 | 38 哥,这个不是onsite,这个online test....额连phone interview 都还木有呢。。。
priority queue insert 是logn 吧?为什么可能是1? 还有返回值必须是个Point的指
针,是不是要把前k个元素copy到一个数组里,再return这个数组。。。额是菜鸟,请
不要介意。。。 |
|
|
|
w********g 发帖数: 106 | 41 刚刚回看了一遍代码,我终于明白他是什么意思了!
他是叫我free另一个东西!我一直以为他叫我free这个!
我已经把那个free过了,就纠结于怎么free这个,心想free返回值真是闻所未闻啊,原
来是误解面试官了。难怪他说了一句its fine就不继续了。 |
|
|
s********k 发帖数: 6180 | 43 这个signature写的很标准啊,返回值就是char*,然后两个参数都加上const做保护避
免在函数中被修改 |
|
|
z****e 发帖数: 54598 | 45 rand5只能产生整数
如果返回值是double的话
rand5其实可以产生任何范围内的数 |
|
r*******e 发帖数: 7583 | 46 6*rand5是调用一次rand5,把返回值乘以6
不是调用6次rand5 |
|
l*n 发帖数: 529 | 47 挖个坟。
你这个结论是错的,二分查找要求必须是ArrayList,但是如果是ArrayList的话,
merge区域before/after区段的拷贝还是要O(n)(新建ArrayList作为返回值);而如果完
全使用原ArrayList,因为ArrayList没有public的区段删除方法,每次remove(i)的时
候都是O(n)。只有LinkedList处理after区段是O(1),但是before区段还是O(n),而且
二分就不存在了。综上,还是线性处理+新建ArrayList吧。 |
|
z****e 发帖数: 54598 | 48 如果返回值是boolean的话
你没有必要把所有的可能性全部遍历过去 |
|
s********u 发帖数: 1109 | 49 不需要吧?递归的返回值是一个 vector就可以了吧?
只是DP应该能降低time cost,因为的确是有重复的subproblems,只是感觉也会增加许
多 space cost。 |
|
s********u 发帖数: 1109 | 50 嗯 作为类的变量也行 不过我所说的static的是4的那个buf,而不是输出的buffer。输
出那个buffer是个参数,应该是可以用户来给定的,或者相当于一个返回值。这个题应
该是这个意思。所以你不能把余下来的东西存在buffer里,而要存在buf里。。。。好绕 |
|