sokaoti.com
北京华力创通科技股份有限公司2月招聘面试题73道2020224

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

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

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

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

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


正确答案:C


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

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

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

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

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


参考答案:BC


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

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


正确答案:正确


DNS客户向本机所配DNS服务器发出的查询和DNS服务器向其它DNS服务器发出的查询分别是()。

A.迭代,递归

B.迭代,迭代

C.递归,迭代

D.递归,递归


参考答案:C


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

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


参考答案:错误


北京华力创通科技股份有限公司2月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:简述 生成器、迭代器、可迭代对象 以及应用场景?可用的回答 : 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异常的工作。 问题 Q2:迭代器和生成器的区别?可用的回答 : 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于 string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调 用iter()函数,iter()是python的内置函数。iter()会返回一个定义了next()方法的迭代器对象,它在容器中 逐个访问容器内元素,next()也是python的内置函数。在没有后续元素时,next()会抛出一个 StopIteration异常 2)生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需 要返回数据的时候使用yield语句。每次next()被调用时,生成器会返回它脱离的位置(它记忆语句最后 一次执行的位置和所有的数据值) 区别:生成器能做到迭代器能做的所有事,而且因为自动创建了iter()和next()方法,生成器显得特别简洁, 而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态 的自动方法,当发生器终结时,还会自动抛出StopIteration异常 问题 Q3:什么是Python中的迭代器?可用的回答 :在Python中,迭代器用于迭代一组元素,如列表之类的容器。问题 Q4:遇到过得反爬虫策略以及解决方法?可用的回答 : 反爬虫策略: 1.通过headers反爬虫 2.基于用户行为的发爬虫(同一IP短时间内访问的频率,封IP) 3.动态网页反爬虫(通过ajax请求数据,或者通过JavaScript生成) 4.对部分数据进行加密处理的(数据是乱码) 解决方法: 1. 对于基本网页的抓取可以自定义headers,添加headers的数据 2. 使用多个代理ip进行抓取或者设置抓取的频率降低一些, 3. 动态网页的可以使用selenium + phantomjs 进行抓取 4. 对部分数据进行加密的,可以使用selenium进行截图,使用python自带的pytesseract库进行识别,但是比较慢最直接的方法是找到加密的方法进行逆向推理。 问题 Q5: scrapy分为几个组成部分?分别有什么作用?可用的回答 : 分为5个部分; 1. Spiders(爬虫类) 2. Scrapy Engine(引擎) 3. Scheduler(调度器) 4. Downloader(下载器) 5. Item Pipeline(处理管道) 具体来说: Spiders:开发者自定义的一个类,用来解析网页并抓取指定url返回的内容。 Scrapy Engine:控制整个系统的数据处理流程,并进行事务处理的触发。 Scheduler:接收Engine发出的requests,并将这些requests放入到处理列队中,以便之后engine需要时再提供。 Download:抓取网页信息提供给engine,进而转发至Spiders。 Item Pipeline:负责处理Spiders类提取之后的数据。 比如清理HTML数据、验证爬取的数据(检查item包含某些字段)、查重(并丢弃)、将爬取结果保存到数据库中 问题 Q6:、isinstance作用以及应用场景?可用的回答 : isinstance(obj, cls) 检查一个obj是否是cls的一个对象 问题 Q7:Python中的lambda是什么?可用的回答 :它是一个单独的表达式匿名函数,通常用作内联函数。问题 Q8:列表的扁平化和降维?比如有一个二维列表,降成普通的一维的。如:groups = huahua, xiaojian, musen, yuze, keyou得到结果 huahua, xiaojian, musen, yuze, keyou可用的回答 : 方法一:最简单的方式可以通过 for 循环的方式一一提取: names = for group in groups: for name in group: names.append(name) print(names) 方法二:但是在面试的时候可能会加一些限制,比如让你用一行代码实现 这个时候就需要对 python 基础有进一步的理解了,比如说使用 sum 函数: names = sum(groups, ) 方法三:通过列表推导式也可以方便的解决: a = e for group in groups for e in group 问题 Q9:AJAX是什么,如何使用AJAX?可用的回答 :

阅读下列函数说明和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()


DNS客户向本机所配DNS服务器发出的为()查询,DNS服务器向其它DNS服务器发出的为()查询。

  • A、迭代,递归
  • B、迭代,迭代
  • C、递归,迭代
  • D、递归,递归

正确答案:C


下面关于迭代评估的内容哪个是正确的()。

  • A、每次迭代后,一定要进行迭代评估,并根据迭代评估的结果来制定下一次迭代计划
  • B、迭代评估可以在一次迭代中进行
  • C、迭代评估主要是对文档的评估
  • D、迭代评估可以根据项目情况在多次迭代后做一次评估

正确答案:A


以下哪些是Python3相对于Python2的改动?()

  • A、字符串默认使用unicode
  • B、使用新的字符串格式化方法format取代%运算符
  • C、整数除法行为改变
  • D、range变得和xrange一样返回迭代器

正确答案:A,B


在python中,生成器是特殊的迭代器。


正确答案:正确

更多 “北京华力创通科技股份有限公司2月招聘面试题73道2020224” 相关考题
考题 单选题python中,map函数的第二个参数是()A 可迭代对象B 方法C 属性D 函数正确答案:C解析:暂无解析

考题 在迭代器模式中,提供一个()的迭代器来对聚合对象进行访问和遍历。A、外部B、内部C、中间D、以上三者都可以正确答案:A

考题 使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素正确答案:错误

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

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

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

考题 遍历全部数组元素的方法有?() A、使用for 循环B、使用迭代器IteratorC、使用枚举器EnumerationD、使用增强型for 循环正确答案:A,D

考题 单选题对于UP方法的“构造阶段”描述正确的是()A 对风险较低和比较简单的元素进行迭代实现B 对风险较高元素进行迭代实现C 开始进入编程实现阶段D 边编程边部署正确答案:D解析:暂无解析

考题 对于UP方法的“构造阶段”描述正确的是()A、对风险较低和比较简单的元素进行迭代实现B、对风险较高元素进行迭代实现C、开始进入编程实现阶段D、边编程边部署正确答案:A

考题 单选题在迭代器模式中,提供一个()的迭代器来对聚合对象进行访问和遍历。A 外部B 内部C 中间D 以上三者都可以正确答案:C解析:暂无解析