上海海得控制系统股份有限公司4月招聘面试题162道202044

下列的说法中,不正确的是()

A.迭代器协议是指:对象必须提供一个next方法

B.list、dict、str虽然是Iterable,却不是Iterator

C.生成器与迭代器对象的区别在于:它仅提供next()方法

D.生成器实现了迭代器协议,但生成器是边计算边生成达到节省内存及计算资源


正确答案:C


● (43)设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

(43)

A. Adapter(适配器)

B. Iterator(迭代器)

C. Prototype(原型)

D. Observer(观察者)


正确答案:D


以下关于迭代器访问集合结构错误的是()

A、访问聚合对象的内容而无需暴露内部表示

B、不支持对聚合对象的多种遍历

C、为遍历不同的聚合结构提供不同的接口

D、定义聚合对象和迭代器接口时,具体的迭代器可实现访问聚合对象的方法


参考答案:BC


RDD的flatMap操作是将函数应用于RDD之中的每一个元素,将返回的迭代器数组、列表等中的所有元素构成新的RDD。()

此题为判断题(对,错)。


正确答案:正确


“可迭代的”(iterable)指可以连续地提供其中的每一个元素的对象。()

此题为判断题(对,错)。


参考答案:√


上海海得控制系统股份有限公司4月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:Python中的lambda是什么?可用的回答 :它是一个单独的表达式匿名函数,通常用作内联函数。问题 Q2:简述 生成器、迭代器、可迭代对象 以及应用场景?可用的回答 : Python可迭代对象(Iterable) Python中经常使用 for 来对某个对象进行遍历,此时被遍历的这个对象就是可迭代对象,像常见的 list , tuple 都是。 如果给一个准确的定义的话,就是只要它定义了可以返回一个迭代器的 _iter_ 方法, 或者定义了可以支持下标索引的 _getitem_ 方法,那么它就是一个可迭代对象。 Python迭代器(iterator) 迭代器是通过 next() 来实现的,每调用一次他就会返回下一个元素,当没有下一个元素的时候返回一个 StopIteration 异常, 所以实际上定义了这个方法的都算是迭代器。 Python生成器(Generators) 生成器是构造迭代器的最简单有力的工具,与普通函数不同的只有在返回一个值的时候使用 yield 来替代 return , 然后 yield 会自动构建好 next() 和 iter() 因为迭代器如此普遍,python专门为for关键字做了迭代器的语法糖。 在for循环中,Python将自动调用工厂函数iter()获得迭代器,自动调用next()获取元素,还完成了检查StopIteration异常的工作。 问题 Q3:简述一下scrapy的基本流程?可用的回答 : scrapy分为9个步骤: 1. Spiders需要初始的start_url或则函数stsrt_requests,会在内部生成Requests给Engine; 2. Engine将requests发送给Scheduler; 3. Engine从Scheduler那获取requests,交给Download下载; 4. 在交给Dowmload过程中会经过Downloader Middlewares(经过process_request函数); 5. Dowmloader下载页面后生成一个response,这个response会传给Engine,这个过程中又经过了Downloader Middlerwares(经过process_request函数),在传送中出错的话经过process_exception函数; 6. Engine将从Downloader那传送过来的response发送给Spiders处理,这个过程经过Spiders Middlerwares(经过process_spider_input函数); 7. Spiders处理这个response,返回Requests或者Item两个类型,传给Engine,这个过程又经过Spiders Middlewares(经过porcess_spider_output函数); 8. Engine接收返回的信息,如果使Item,将它传给Items Pipeline中;如果是Requests,将它传给Scheduler,继续爬虫; 9. 重复第三步,直至没有任何需要爬取的数据 问题 Q4:列举网络爬虫所用到的网络数据包,解析包?可用的回答 : 网络数据包 urllib、urllib2、requests 解析包 re、xpath、beautiful soup、lxml 问题 Q5:谷歌的无头浏览器?可用的回答 : 无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。 Python中selenium模块中的PhantomJS即为无界面浏览器(无头浏览器):是基于QtWebkit的无头浏览器。 问题 Q6:Python中的self是什么?可用的回答 :self是类的实例或对象。在Python中,self包含在第一个参数中。init方法中的self变量引用新创建的对象,而在其他方法中,它引用其方法被调用的对象。问题 Q7:django 中当一个用户登录 A 应用服务器(进入登录状态),然后下次请求被 nginx 代理到 B 应用服务器会出现什么影响?可用的回答 :如果用户在A应用服务器登陆的session数据没有共享到B应用服务器,那么之前的登录状态就没有了。问题 Q8:介绍一下except的用法和作用?可用的回答 : tryexceptexceptelsefinally 执行try下的语句,如果引发异常,则执行过程会跳到except语句。 对每个except分支顺序尝试执行,如果引发的异常与except中的异常组匹配,执行相应的语句。 如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。 try下的语句正常执行,则执行else块代码。如果发生异常,就不会执行 如果存在finally语句,最后总是会执行。 问题 Q9:简述 生成器、迭代器、可迭代对象 以及应用场景?可用的回答 : Python可迭代对象(Iterable) Python中经常使用 for 来对某个对象进行遍历,此时被遍历的这个对象就是可迭代对象,像常见的 list , tuple 都是。 如果给一个准确的定义的话,就是只要它定义了可以返回一个迭代器的 _iter_ 方法, 或者定义了可以支持下标索引的 _getitem_ 方法,那么它就是一个可迭代对象。 Python迭代器(iterator) 迭代器是通过 next() 来实现的,每调用一次他就会返回下一个元素,当没有下一个元素的时候返回一个 StopIteration 异常, 所以实际上定义了这个方法的都算是迭代器。 Python生成器(Generators) 生成器是构造迭代器的最简单有力的工具,与普通函数不同的只有在返回一个值的时候使用 yield 来替代 return , 然后 yield 会自动构建好 next() 和 iter() 因为迭代器如此普遍,python专门为for关键字做了迭代器的语法糖。 在for循环中,Python将自动调用工厂函数iter()获得迭代器,自动调用next()获取元素,还完成了检查StopIteration异常的工作。 问题 Q10:什么是局域网和广域网?可用的回答 : 局域网:(Local Area Network,LAN), 局域网是一个局部范

使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素。( )

此题为判断题(对,错)。


参考答案:错误


对Java中类的构造方法描述正确的是 ( )

A.如果在类中没有定义,Java就提供一个默认的构造方法

B.只能有一个构造方法

C.没有返回值,所以返回类型是void

D.可以直接被程序调用


正确答案:A
解析:构造方法就是用来对变量进行初始化的,在Java语言中,每个类至少有一个构造方法,为了保证这一点,如果用户定义的类中没有提供任何构造方法,那么Java语言将自动提供一个隐含的默认构造方法,选项A正确;Java中可以有多个类,所以可以有多个构造方法,选项B不正确;构造方法没有返回值,故默认为void类型,构造方法不可以定义为void类型,只可以省略不写,选项C不正确;当构造方法为private级别,意味着只能在当前类中访问它:在当前类的其他构造方法中可以通过this语句调用它,此外还可以在当前类的成员方法中通过new语句调用它,选项D错误。


定义应用需求的原型生命周期应该是一个迭代的过程,而其迭代工作量集中的【 】。


正确答案:开发模型
开发模型 解析:定义应用需求的原型生命周期应该是一个迭代的过程,而其迭代工作量集中的开发模型。


阅读下列函数说明和C++代码,回答问题

[说明]

对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图5-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。

[图5-1]

[C++代码]

template (1) >

class Iterator{

public:

virtual bool hasNext() = 0;

(2) Object* next() = 0;

};

class Book{

//省略具体方法和属性

};

class BookShelf{

private:

vector books;

public:

BookShelf(){

}

Book* getBookAt(int index){

return &booksindex;

}

int getLength(){

return books. size();

}

};

template

class BookshelfIterator : public (3) {

private:

BookShelf * bookShelf;

int index;

public:

BookshelfIterator(BookShelf *bookShelf){

this->bookShelf = bookShelf;

index = 0;

}

bool hasNext(){//判断是否还有下一个元素

if(index < bookShelf->getLength()){

return true;

}else{

return false;

}

}

Objeot* next(){//取得下一个元素

return bookShelf->getBookAt(index++);

}

};

int main()

{

BookShelf bookShelf;

//将书籍上架,省略代码

Book *book;

Iterator *it = new BookShelfIterator( (4) );

while( (5) ){//遍历书架,输出书名

book=(Book*)it->next();

/*访问元素*/

}

return 0;

}


正确答案:(1)Object virtual IteratorObject> &bookShelf it->hasNext()
(1)Object virtual IteratorObject> &bookShelf it->hasNext()


定义应用需求的原型生命周期应是一个迭代过程,而其迭代工作量主要集中在 ______。


正确答案:开发模型
开发模型 解析:开发工作模型目的是建立原型的初始方案,必须提交一个有一定深度和广度的工作模型,以便进行有意义的讨论,并从它开始迭代。

更多 “上海海得控制系统股份有限公司4月招聘面试题162道202044” 相关考题
考题 使用Iterator遍历集合时,首先需要调用() 方法判断是否存在下一个元素,若存在下一个元素,则调用()方法取出该元素正确答案:hashNext();next()

考题 关于Python中的元组list和列表tuple,以下描述错误的是:()A、二者都可以通过循环语句来迭代B、二者都可以追加元素C、二者都可以删除元素D、只有列表可以作为函数的变长位置参数解包func(*foo_list)正确答案:B,C,D

考题 单选题项目团队请团队领导将一个迭代延长一天时间,让他们可以在下一次sprint期间评审会前完成一个功能,团队领导应该怎么做?()A 保持当前和未来的迭代时间长度B 将所有迭代延长一天C 将当天迭代延长一天D 将当前迭代延长一天,并将下一个迭代缩短一天正确答案:B解析:暂无解析

考题 set集合如何处理重复元素A.如果加入一个重复元素将抛出异常B.如果加入一个重复元素add方法将返回falseC. 集合通过调用equals方法可以返回包含重复值的元素。D. 重复值将导致编译出错。正确答案:B

考题 判断题使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素A 对B 错正确答案:对解析:暂无解析

考题 关于函数的返回值,以下描述中错误的是() A、如果函数定义中有返回值,那么函数中就必须保证任何情况下都能通过return语句返回一个值,否则编译时会出错B、一个函数中只能有一条return语句,而且它必须位于函数的最后一行C、如果函数定义中没有返回值,那么这个函数就不能用return语句返回D、如果函数定义中有返回值,那么这个函数就必须通过return语句返回一个值E、函数通过return语句返回值正确答案:B,C

考题 关键字()用于测试一个对象是否是一个可迭代对象的元素。正确答案:in

考题 项目团队请团队领导将一个迭代延长一天时间,让他们可以在下一次sprint评审会前完成一个功能,团队领导应该怎么做?()A、保持当前和未来的迭代时间长度。B、将所有迭代延长一天。C、将当前迭代延长一天。D、将当前迭代延长一天,并将下一个迭代缩短一天。正确答案:A

考题 填空题关键字()用于测试一个对象是否是一个可迭代对象的元素。正确答案:in解析:暂无解析

考题 下面有关迭代器说法错误的是?()A、迭代器it的两个基本操作是next和hasNextB、调用迭代器next()会返回迭代器的下一个元素,并且更新迭代器的状态C、Scala Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法D、Scala Iterator(迭代器)是一个集合正确答案:D