z********c 发帖数: 72 | 1 连续两个真的挺虚的。
第一个一上来给出一堆名词,要我给definition,跪了。。。乱说一气
然后给了个linkedlist的题,看过careercup就很轻松
一面感觉还行
第二个是悲剧
一个简单的代码题,我一开始给了solution,可以work,但根本没必要。可是我刚一说
我想法,面试官就很兴奋的说“Great,How to implement this idea?!”我还以为自
己这方法就是他想要的。。 我就屁颠屁颠开始写程序了。。。。图森破拿衣服
写完了,测试样例写完了。才发现傻逼了,用了根本不该用的高级数据结构。当时直接
在心里给自己两个耳刮子。赶紧跟面试官说,老大说好,然后咋改。然后blablabla改
。。。然后因为这个题时间也刚好完了。。
唯一一个亮点可能是他看我写完新方法以后,看完代码问用新的做法更快,但有没有可
能有老方法不出bug但新方法出bug的地方。我看了一分钟,找到了他可能说出bug的地
方,然后说Yeah this is what i'm talking about
昨天问一个哥们同样面的G,题比我难,答的比我好,被拒了。我这个第二个面馆我觉
得会给positive,是不是没戏了? |
a***o 发帖数: 1182 | 2 intern?
【在 z********c 的大作中提到】 : 连续两个真的挺虚的。 : 第一个一上来给出一堆名词,要我给definition,跪了。。。乱说一气 : 然后给了个linkedlist的题,看过careercup就很轻松 : 一面感觉还行 : 第二个是悲剧 : 一个简单的代码题,我一开始给了solution,可以work,但根本没必要。可是我刚一说 : 我想法,面试官就很兴奋的说“Great,How to implement this idea?!”我还以为自 : 己这方法就是他想要的。。 我就屁颠屁颠开始写程序了。。。。图森破拿衣服 : 写完了,测试样例写完了。才发现傻逼了,用了根本不该用的高级数据结构。当时直接 : 在心里给自己两个耳刮子。赶紧跟面试官说,老大说好,然后咋改。然后blablabla改
|
z********c 发帖数: 72 | |
a***o 发帖数: 1182 | 4 应该有戏吧,linkedlist是啥题目?
【在 z********c 的大作中提到】 : full time
|
n****e 发帖数: 2401 | 5 操,最烦这种,说了半天通篇废话。
【在 z********c 的大作中提到】 : 连续两个真的挺虚的。 : 第一个一上来给出一堆名词,要我给definition,跪了。。。乱说一气 : 然后给了个linkedlist的题,看过careercup就很轻松 : 一面感觉还行 : 第二个是悲剧 : 一个简单的代码题,我一开始给了solution,可以work,但根本没必要。可是我刚一说 : 我想法,面试官就很兴奋的说“Great,How to implement this idea?!”我还以为自 : 己这方法就是他想要的。。 我就屁颠屁颠开始写程序了。。。。图森破拿衣服 : 写完了,测试样例写完了。才发现傻逼了,用了根本不该用的高级数据结构。当时直接 : 在心里给自己两个耳刮子。赶紧跟面试官说,老大说好,然后咋改。然后blablabla改
|
z********c 发帖数: 72 | 6 好吧,题目真心不难
两道要码的
1. Rotate r node to right: A->B->C->D->E->NULL, r = 2
D->E->A->B->C->Null
2. iterator has only bool hasNext () and T next() method, write a wrapper
for iterator, to support peek ()
【在 n****e 的大作中提到】 : 操,最烦这种,说了半天通篇废话。
|
h*****g 发帖数: 312 | 7 我x.
第二题跟我去年面google 的题一样,当时就悲剧了。。
求解答~~~
【在 z********c 的大作中提到】 : 好吧,题目真心不难 : 两道要码的 : 1. Rotate r node to right: A->B->C->D->E->NULL, r = 2 : D->E->A->B->C->Null : 2. iterator has only bool hasNext () and T next() method, write a wrapper : for iterator, to support peek ()
|
l*********8 发帖数: 4642 | 8 第二题我觉得就是在wrapper里用个变量把下一个T value存起来,是吗?
【在 z********c 的大作中提到】 : 好吧,题目真心不难 : 两道要码的 : 1. Rotate r node to right: A->B->C->D->E->NULL, r = 2 : D->E->A->B->C->Null : 2. iterator has only bool hasNext () and T next() method, write a wrapper : for iterator, to support peek ()
|
z********c 发帖数: 72 | 9 我一拍脑袋这不可以用queue么!
写完了才发现可以只用一个变量。。。
【在 l*********8 的大作中提到】 : 第二题我觉得就是在wrapper里用个变量把下一个T value存起来,是吗?
|
z********c 发帖数: 72 | 10 哦第一个面馆还问了个问题,我不知道怎么回答
他首先问什么叫内存泄露,我说比如C里你malloc不释放就泄露了,然后他问如果知道
一端程序泄露了,怎么查出哪里泄了。我想了半天,只想到去查找每个malloc对应的
free,面馆也没肯定否定 |
|
|
m*********e 发帖数: 55 | 11 userspace用valgrind一查就行。
kernelspace不好办。
【在 z********c 的大作中提到】 : 哦第一个面馆还问了个问题,我不知道怎么回答 : 他首先问什么叫内存泄露,我说比如C里你malloc不释放就泄露了,然后他问如果知道 : 一端程序泄露了,怎么查出哪里泄了。我想了半天,只想到去查找每个malloc对应的 : free,面馆也没肯定否定
|
h**********l 发帖数: 6342 | 12 能解释一下吗?
还没看明白题目
多谢
【在 z********c 的大作中提到】 : 我一拍脑袋这不可以用queue么! : 写完了才发现可以只用一个变量。。。
|
z********c 发帖数: 72 | 13 现在有一个容器的iterator,支持
bool hasNext () 是否还有元素
T next () 取出下个元素,并迭代器后移
现在要你写一个wrapper类
class wrapper {
wrapper (iterator it);
bool hasNext ()
T next ()
T peek ()
}
以一个iterator为构造函数,在支持hasNext和next的同时,添加peek (),即查看下一
个元素的值,但迭代器不后移
【在 h**********l 的大作中提到】 : 能解释一下吗? : 还没看明白题目 : 多谢
|
h**********l 发帖数: 6342 | 14 明白了,
非常感谢
【在 z********c 的大作中提到】 : 现在有一个容器的iterator,支持 : bool hasNext () 是否还有元素 : T next () 取出下个元素,并迭代器后移 : 现在要你写一个wrapper类 : class wrapper { : wrapper (iterator it); : bool hasNext () : T next () : T peek () : }
|
i**********e 发帖数: 1145 | 15 可以更改 hasNext() 和 next() 函数吗?
【在 z********c 的大作中提到】 : 现在有一个容器的iterator,支持 : bool hasNext () 是否还有元素 : T next () 取出下个元素,并迭代器后移 : 现在要你写一个wrapper类 : class wrapper { : wrapper (iterator it); : bool hasNext () : T next () : T peek () : }
|
h**********l 发帖数: 6342 | 16 必须改阿
新的next()直接返回tmp的值,然后tmp改为old next()的返回值
hasnext()好像不用改,或者改为 !tmp
【在 i**********e 的大作中提到】 : 可以更改 hasNext() 和 next() 函数吗?
|
i**********e 发帖数: 1145 | 17 恩,还以为有什么神秘trick可以不用改。
改的话就利用一个temp储存下一个,hasNext 和 next 做一下额外判断就行。 |
h**********l 发帖数: 6342 | 18 hasnext()不知道怎么实现的,
但是不一定是必须改的
我觉得
【在 i**********e 的大作中提到】 : 恩,还以为有什么神秘trick可以不用改。 : 改的话就利用一个temp储存下一个,hasNext 和 next 做一下额外判断就行。
|
h******0 发帖数: 427 | |
p*****2 发帖数: 21240 | |
|
|
p*****2 发帖数: 21240 | 21
我的经验是除了你这个方法就是用工具了。
【在 z********c 的大作中提到】 : 哦第一个面馆还问了个问题,我不知道怎么回答 : 他首先问什么叫内存泄露,我说比如C里你malloc不释放就泄露了,然后他问如果知道 : 一端程序泄露了,怎么查出哪里泄了。我想了半天,只想到去查找每个malloc对应的 : free,面馆也没肯定否定
|
i**********e 发帖数: 1145 | 22 C++ 里可以overload operator new 和 delete,每次new一次加一,delete一次减一。
这样program结束之前确认counter是否为0。如果不是的话,就内存外泄了。 |
t********6 发帖数: 348 | 23 G的full time电面都是两个连续的么?为啥我听说有的就一个人?
【在 z********c 的大作中提到】 : 连续两个真的挺虚的。 : 第一个一上来给出一堆名词,要我给definition,跪了。。。乱说一气 : 然后给了个linkedlist的题,看过careercup就很轻松 : 一面感觉还行 : 第二个是悲剧 : 一个简单的代码题,我一开始给了solution,可以work,但根本没必要。可是我刚一说 : 我想法,面试官就很兴奋的说“Great,How to implement this idea?!”我还以为自 : 己这方法就是他想要的。。 我就屁颠屁颠开始写程序了。。。。图森破拿衣服 : 写完了,测试样例写完了。才发现傻逼了,用了根本不该用的高级数据结构。当时直接 : 在心里给自己两个耳刮子。赶紧跟面试官说,老大说好,然后咋改。然后blablabla改
|
l***i 发帖数: 1309 | 24 For C you can probably provide a wrapper for malloc.
【在 i**********e 的大作中提到】 : C++ 里可以overload operator new 和 delete,每次new一次加一,delete一次减一。 : 这样program结束之前确认counter是否为0。如果不是的话,就内存外泄了。
|
l***i 发帖数: 1309 | 25 This seems like implementing i++
【在 z********c 的大作中提到】 : 现在有一个容器的iterator,支持 : bool hasNext () 是否还有元素 : T next () 取出下个元素,并迭代器后移 : 现在要你写一个wrapper类 : class wrapper { : wrapper (iterator it); : bool hasNext () : T next () : T peek () : }
|
t********e 发帖数: 143 | 26 I deleted my original post. It is wrong. :)
I think we need to know how iterator is defined, i.e what interface function
it has.. A lot of iterators you can just deference it to get current value,
i.e. peek. |
s********y 发帖数: 28 | 27 谁能把这个peek的贴个code啊,还是没搞明白。谢谢
【在 z********c 的大作中提到】 : 现在有一个容器的iterator,支持 : bool hasNext () 是否还有元素 : T next () 取出下个元素,并迭代器后移 : 现在要你写一个wrapper类 : class wrapper { : wrapper (iterator it); : bool hasNext () : T next () : T peek () : }
|
p*****2 发帖数: 21240 | |
g*******s 发帖数: 2963 | 29 这个行不?constructor里我pass了container(这里是vector),因为我不知道没有
container该怎么写hasNext()? 如果假设原始iterator已经有hasNext()和next()了,
那这俩函数应该不用改吧?看成black box就行了,直接在peek里引入个temp变量就行
了。
#include
#include
using namespace std;
template
class Wrapper {
public:
Wrapper(vector &v,
typename vector::iterator it)
:_vec(v),_it(it),_tempIt(it){
_it = _vec.begin();
};
bool hasNext(){
_tempIt = _it;
return (++_tempIt)!=_vec.end();
};
T next(){return *++_it;};
T peek(){
_tempIt = _it;
return *++_tempIt;
};
T operator*() {return *_it;};
private:
vector _vec;
typename vector::iterator _it;
typename vector::iterator _tempIt;
};
int main()
{
int a[]={1,2,3,4,5};
vector v(a, a+5);
vector::iterator it;
Wrapper wit(v, it);
cout<<"current: "<<*wit<
cout<<"hasNext: "<
cout<<"go next: "<
cout<<"current: "<<*wit<
cout<<"peek next: "<
cout<<"current: "<<*wit<
std::cin.get();
return 0;
} |
l********5 发帖数: 230 | 30 所以需要两个iterator?一个比另一个快一步 然后取到下一个的值存到temp里然后
peek返回这个temp 这样吗?
【在 i**********e 的大作中提到】 : 恩,还以为有什么神秘trick可以不用改。 : 改的话就利用一个temp储存下一个,hasNext 和 next 做一下额外判断就行。
|
|
|
C***U 发帖数: 2406 | 31 。。。开始来jobhunting了。。。。
【在 n****e 的大作中提到】 : 操,最烦这种,说了半天通篇废话。
|
z*******3 发帖数: 13709 | 32 那就是预先取一个next值出来,寄存在class里面
然后设置hasNext()返回为true
next()的时候,再弹出当前这个,再预取一个出来寄存到现在这个class里面
class Wrapper{
private T tmp;
private boolean hasNext = false;
Wrapper(Iterator it){
if(it.hasNext()){
tmp = it.next();
hasNext = true;
}
}
public boolean hasNext(){return hasNext;}
public T peek(){return tmp};
public T next() throws Exception{
if(hasNext){
T t = tmp;
hasNext = it.hasNext();
if(it.hasNext()){
tmp = it.next();
}
return t;
}else throw new Exception("null pointer exception");
}
}
【在 z********c 的大作中提到】 : 现在有一个容器的iterator,支持 : bool hasNext () 是否还有元素 : T next () 取出下个元素,并迭代器后移 : 现在要你写一个wrapper类 : class wrapper { : wrapper (iterator it); : bool hasNext () : T next () : T peek () : }
|
z*******3 发帖数: 13709 | 33 这难道不是wrapper这个pattern的定义么?
【在 l********5 的大作中提到】 : 所以需要两个iterator?一个比另一个快一步 然后取到下一个的值存到temp里然后 : peek返回这个temp 这样吗?
|
u******g 发帖数: 89 | 34 你这样构造的时候先把hasNext存起来回头人家那边的next万一被删了你也不知道啊。。
【在 z*******3 的大作中提到】 : 那就是预先取一个next值出来,寄存在class里面 : 然后设置hasNext()返回为true : next()的时候,再弹出当前这个,再预取一个出来寄存到现在这个class里面 : class Wrapper{ : private T tmp; : private boolean hasNext = false; : Wrapper(Iterator it){ : if(it.hasNext()){ : tmp = it.next(); : hasNext = true;
|
f*********m 发帖数: 726 | |
b***y 发帖数: 76 | 36 iterator这题跟我遇到的一样哇,我找找我的code |
b***y 发帖数: 76 | 37 贴个我的代码,请大牛们帮忙纠错
PeekIterator implement Iterator {
Iterator iter;
Object curr;
PeekIter(Iterator iter){
iter = iter;
if (iter.hasNext()) curr = iter.next();
else curr = null;
}
Object next() throws Exception{
Object output = peek();
curr = iter.next();
return output;
}
boolean hasNext() {
return curr == null;
}
Object peek() {
return curr;
}
} |
y****n 发帖数: 743 | 38 LS代码中的HasNext()被转义了。
我认为不可以通过curr==null当作HasNext()的判断标准。
如果iterator中的某个值就是null呢?
如果是我,我会同时cache那个值和HasNext()的结果。
【在 b***y 的大作中提到】 : 贴个我的代码,请大牛们帮忙纠错 : PeekIterator implement Iterator { : Iterator iter; : Object curr; : PeekIter(Iterator iter){ : iter = iter; : if (iter.hasNext()) curr = iter.next(); : else curr = null; : } : Object next() throws Exception{
|