由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - [google面试]iterator访问
相关主题
贴一个C++ nested Iterator的code,求讨论和指正。这个题没见过大家可以很快做出来吗?
Google店面找工作告一段落了,发点面经回馈本版
讨论一个题目Flatten Binary Tree to Linked List的recursive解法
求指点一道G家Iterator的题目小弟求问LinkedIn那道Deep Iterator的题
问一道题发个g的电面
问个题实现vector的iterator,template问题
写了封信给google抱怨电面被印度人黑的经历Bloomberg phone interview 面经
刷了半天题新店面
相关话题的讨论汇总
话题: integer话题: vector话题: vv话题: iterator话题: list
进入JobHunting版参与讨论
1 (共1页)
d********w
发帖数: 363
1
给出一个二维vector,实现 flatten类
class flatten implements iterator{
public flatten(vector> a);
boolean hasNext();
iterator next();
}
可以用size求出所有的元素多少,但好像也不必,还要考虑到一些特殊case,比如里面
的vector大小为空。大家能写个bug free很简洁的么,谢谢
p*****2
发帖数: 21240
2
两个变量是不是就行了?
B*******1
发帖数: 2454
3
onsite?
w****x
发帖数: 2483
4
世界很小啊....
w****x
发帖数: 2483
5
是不是x,y两个变量, x代表第几个vector, y代表这个vector下的第几个元素??
p*****2
发帖数: 21240
6

对呀。我觉得这样就行了。感觉不难呀。

【在 w****x 的大作中提到】
: 是不是x,y两个变量, x代表第几个vector, y代表这个vector下的第几个元素??
D********g
发帖数: 650
7
我的java 版本,欢迎指正
public static class Flattener {
final List> _vv;
int _curList = 0;
int _curOffset = 0;
public Flattener(final List> vv) {
if (vv == null) {
throw new IllegalArgumentException();
}
_vv = new ArrayList>();
for (int i = 0; i < vv.size(); ++i) {
if (vv.get(i) == null || vv.get(i).size() == 0) {
continue;
}
_vv.add(vv.get(i));
}
}

boolean hasNext() {
return !(_curList >= _vv.size());
}

int next () {
if (_curList >= _vv.size()) {
return -1; // Or throw
}

assert(_vv.get(_curList).size() > _curOffset);
int cpCurOffset = _curOffset;
int cpCurList = _curList;
_curOffset ++;
if (_curOffset >= _vv.get(_curList).size()) {
_curList++;
_curOffset = 0;
}
return _vv.get(cpCurList).get(cpCurOffset);
}
}

static void testFlattener() {
List> vv = new ArrayList>();
vv.add(null);
vv.add(new ArrayList());
Flattener f = new Flattener(vv);
if (!f.hasNext()) {
System.out.println("Flattener doesn't have next.");
}

vv.add(Arrays.asList(1, 2, 3));
vv.add(Arrays.asList(4, 5, 6));
f = new Flattener(vv);
while (f.hasNext()) {
System.out.println(f.next());
}

}

【在 d********w 的大作中提到】
: 给出一个二维vector,实现 flatten类
: class flatten implements iterator{
: public flatten(vector> a);
: boolean hasNext();
: iterator next();
: }
: 可以用size求出所有的元素多少,但好像也不必,还要考虑到一些特殊case,比如里面
: 的vector大小为空。大家能写个bug free很简洁的么,谢谢

l*****a
发帖数: 14598
8
why?
if (vv == null) {
throw new IllegalArgumentException();
}

【在 D********g 的大作中提到】
: 我的java 版本,欢迎指正
: public static class Flattener {
: final List> _vv;
: int _curList = 0;
: int _curOffset = 0;
: public Flattener(final List> vv) {
: if (vv == null) {
: throw new IllegalArgumentException();
: }
: _vv = new ArrayList>();

d********w
发帖数: 363
9
面试官说不让这么用,可以用到vector的iterator

【在 p*****2 的大作中提到】
:
: 对呀。我觉得这样就行了。感觉不难呀。

p*****2
发帖数: 21240
10

从来没用过vector,学习一下。

【在 d********w 的大作中提到】
: 面试官说不让这么用,可以用到vector的iterator
相关主题
问个题这个题没见过大家可以很快做出来吗?
写了封信给google抱怨电面被印度人黑的经历找工作告一段落了,发点面经回馈本版
刷了半天题Flatten Binary Tree to Linked List的recursive解法
进入JobHunting版参与讨论
p*****2
发帖数: 21240
11

定义两个Iterator是不是就行了?

【在 d********w 的大作中提到】
: 面试官说不让这么用,可以用到vector的iterator
l*****a
发帖数: 14598
12
这题到底想考察什么?

【在 p*****2 的大作中提到】
:
: 定义两个Iterator是不是就行了?

p*****2
发帖数: 21240
13

不清楚。我Java也不熟。定义两个iterator跟定义x,y差不多把。

【在 l*****a 的大作中提到】
: 这题到底想考察什么?
l*****a
发帖数: 14598
14
估计就是看你对iterator/enumerator的理解/实现吧

【在 p*****2 的大作中提到】
:
: 不清楚。我Java也不熟。定义两个iterator跟定义x,y差不多把。

p*****2
发帖数: 21240
15

还真是。刚才查了一下,说vector不支持iterator, 还是enumeration, 所以就是考察
从enumeratoion 转到iterator?

【在 l*****a 的大作中提到】
: 估计就是看你对iterator/enumerator的理解/实现吧
l*****a
发帖数: 14598
16
wait, vector is from C++/STL,it should support iterator
IEnumerable/Enumerator are from C#..

【在 p*****2 的大作中提到】
:
: 还真是。刚才查了一下,说vector不支持iterator, 还是enumeration, 所以就是考察
: 从enumeratoion 转到iterator?

p*****2
发帖数: 21240
17

我以为这是java题,要是C++的就算了,我不懂STL。

【在 l*****a 的大作中提到】
: wait, vector is from C++/STL,it should support iterator
: IEnumerable/Enumerator are from C#..

d********w
发帖数: 363
18
是java题呀,我看了
http://www.java-examples.com/iterate-through-elements-java-vect
vector有iterator呀
Iterator itr = v.iterator();

//use hasNext() and next() methods of Iterator to iterate through the
elements
System.out.println("Iterating through Vector elements...");
while(itr.hasNext())
System.out.println(itr.next());

}

【在 p*****2 的大作中提到】
:
: 我以为这是java题,要是C++的就算了,我不懂STL。

d********w
发帖数: 363
19
是的,写出来看看么,
在next时候
如果
v[0]: 2
v[1]: 0
v[2]: 0
v[3]: 1
v[4]: 0
要跳过一些空的vector

【在 p*****2 的大作中提到】
:
: 我以为这是java题,要是C++的就算了,我不懂STL。

p*****2
发帖数: 21240
20

嗯。这是考点。要跳过空的,还要跳过size为0的。我一会儿写写。

【在 d********w 的大作中提到】
: 是的,写出来看看么,
: 在next时候
: 如果
: v[0]: 2
: v[1]: 0
: v[2]: 0
: v[3]: 1
: v[4]: 0
: 要跳过一些空的vector

相关主题
小弟求问LinkedIn那道Deep Iterator的题Bloomberg phone interview 面经
发个g的电面新店面
实现vector的iterator,template问题Apple Siri 组 Java 测试题
进入JobHunting版参与讨论
p*****2
发帖数: 21240
21
大概这个样子吧。
class flat implements Iterator
{
Iterator> it1=null;
Iterator it2=null;

void Getit2()
{
it2=null;
if(it1!=null)
{
while(it1.hasNext())
{
Vector v=it1.next();
if(v!=null && v.size()!=0)
{
it2=v.iterator();
return;
};
}
}
}
public flat(Vector> a)
{
if(a!=null)
{
it1=a.iterator();
Getit2();
}
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return it2!=null;
}
@Override
public Integer next() {
// TODO Auto-generated method stub
if(it2==null)
return null;
int m=it2.next();
if(!it2.hasNext())
Getit2();
return m;
}
@Override
public void remove() {
// TODO Auto-generated method stub
}

}
d********w
发帖数: 363
22
看起来不错阿,你试了哪些test cases么,把unittest也贴出来看看吧

【在 p*****2 的大作中提到】
: 大概这个样子吧。
: class flat implements Iterator
: {
: Iterator> it1=null;
: Iterator it2=null;
:
: void Getit2()
: {
: it2=null;
: if(it1!=null)

d********w
发帖数: 363
23
应该是对的,我试了一些test cases;
Vector item1 = new Vector();
item1.add(1);
item1.add(2);
Vector item2 = new Vector();
item2.add(3);
Vector> a = new Vector>();
//a.add(item2);
a.add(new Vector());
//a.add(item2);
Flat f = new Flat(a);
while(f.hasNext())
System.out.println(f.next());

【在 p*****2 的大作中提到】
: 大概这个样子吧。
: class flat implements Iterator
: {
: Iterator> it1=null;
: Iterator it2=null;
:
: void Getit2()
: {
: it2=null;
: if(it1!=null)

p*****2
发帖数: 21240
24

那还不错呀。我没有test,只是写写思路。这题应该是电面的题吧?不过太java
specific了。我用C和C#的时候都没有用过iterator。

【在 d********w 的大作中提到】
: 应该是对的,我试了一些test cases;
: Vector item1 = new Vector();
: item1.add(1);
: item1.add(2);
: Vector item2 = new Vector();
: item2.add(3);
: Vector> a = new Vector>();
: //a.add(item2);
: a.add(new Vector());
: //a.add(item2);

d********w
发帖数: 363
25
还是你功力深厚呀,这种bugfree能一次写对,佩服!
还问我python的一些操作,比如如何将path和文件名组合起来,我后来查了一下是os.
path.join()可以做到,问api也太那个了。

【在 p*****2 的大作中提到】
:
: 那还不错呀。我没有test,只是写写思路。这题应该是电面的题吧?不过太java
: specific了。我用C和C#的时候都没有用过iterator。

p*****2
发帖数: 21240
26

这题不算难。onsite的题会比这个难。就是这题出的不典型。你简历里边写了有很多
java,python经验吗?

【在 d********w 的大作中提到】
: 还是你功力深厚呀,这种bugfree能一次写对,佩服!
: 还问我python的一些操作,比如如何将path和文件名组合起来,我后来查了一下是os.
: path.join()可以做到,问api也太那个了。

b********8
发帖数: 69
27
世界真的很小,我也面到这道,实现flatten iterator of iterator,可惜当时没做好
,挂了。。
p*****2
发帖数: 21240
28
才发现LZ是谁。呵呵。现在面的好幸福呀。手上几个offer了?
d********w
发帖数: 363
29
啥幸福,还是做题能力不够,损失了很多机会。不过我估计可以到西雅图见你了

【在 p*****2 的大作中提到】
: 才发现LZ是谁。呵呵。现在面的好幸福呀。手上几个offer了?
l*****a
发帖数: 14598
30
A or M?
when u go to Seattle, 北京二牛都去弯曲发大财了

【在 d********w 的大作中提到】
: 啥幸福,还是做题能力不够,损失了很多机会。不过我估计可以到西雅图见你了
相关主题
问一下careercup一道题Google店面
发个Palantir的电面,并求g家onsite的bless讨论一个题目
贴一个C++ nested Iterator的code,求讨论和指正。求指点一道G家Iterator的题目
进入JobHunting版参与讨论
d********w
发帖数: 363
31
哈哈,到时追随北京二牛

【在 l*****a 的大作中提到】
: A or M?
: when u go to Seattle, 北京二牛都去弯曲发大财了

p*****2
发帖数: 21240
32

你又是面apple,又是面google,还来西雅图这小地方呀?

【在 d********w 的大作中提到】
: 啥幸福,还是做题能力不够,损失了很多机会。不过我估计可以到西雅图见你了
d********w
发帖数: 363
33
这个也不是我能选择的

【在 p*****2 的大作中提到】
:
: 你又是面apple,又是面google,还来西雅图这小地方呀?

1 (共1页)
进入JobHunting版参与讨论
相关主题
新店面问一道题
Apple Siri 组 Java 测试题问个题
问一下careercup一道题写了封信给google抱怨电面被印度人黑的经历
发个Palantir的电面,并求g家onsite的bless刷了半天题
贴一个C++ nested Iterator的code,求讨论和指正。这个题没见过大家可以很快做出来吗?
Google店面找工作告一段落了,发点面经回馈本版
讨论一个题目Flatten Binary Tree to Linked List的recursive解法
求指点一道G家Iterator的题目小弟求问LinkedIn那道Deep Iterator的题
相关话题的讨论汇总
话题: integer话题: vector话题: vv话题: iterator话题: list