下列的说法中,不正确的是()
A.迭代器协议是指:对象必须提供一个next方法
B.list、dict、str虽然是Iterable,却不是Iterator
C.生成器与迭代器对象的区别在于:它仅提供next()方法
D.生成器实现了迭代器协议,但生成器是边计算边生成达到节省内存及计算资源
A、访问聚合对象的内容而无需暴露内部表示
B、不支持对聚合对象的多种遍历
C、为遍历不同的聚合结构提供不同的接口
D、定义聚合对象和迭代器接口时,具体的迭代器可实现访问聚合对象的方法
此题为判断题(对,错)。
A.迭代,递归
B.迭代,迭代
C.递归,迭代
D.递归,递归
此题为判断题(对,错)。
北京京东叁佰陆拾度电子商务有限公司12月招聘面试题面试题面试官常问到的一些题目整理如下:问题 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:谷歌的无头浏览器?可用的回答 : 无头浏览器即headless browser,是一种没有界面的浏览器。既然是浏览器那么浏览器该有的东西它都应该有,只是看不到界面而已。 Python中selenium模块中的PhantomJS即为无界面浏览器(无头浏览器):是基于QtWebkit的无头浏览器。 问题 Q3:什么是Python?使用Python有什么好处?可用的回答 :Python是一种编程语言,包含对象,模块,线程,异常和自动内存管理。Python的好处在于它简单易用,可移植,可扩展,内置数据结构,并且它是一个开源的。问题 Q4:什么是PEP 8?可用的回答 :PEP 8是一个编码约定,关于如何编写Python代码更具可读性。问题 Q5:如何在Flask中访问会话?可用的回答 :会话基本上允许您记住从一个请求到另一个请求的信息。在一个Flask中,它使用签名cookie,以便用户可以查看会话内容并进行修改。如果只有密钥Flask.secret_key,则用户可以修改会话。问题 Q6:什么是arp协议?可用的回答 : ARP(Address Resolution Protocol)即地址解析协议, 用于实现从 IP 地址到 MAC 地址的映射,即询问目标IP对应的MAC地址。 问题 Q7:如何在Python中实现多线程?可用的回答 :Python有一个多线程库,但是用多线程来加速代码的效果并不是那么的好,Python有一个名为Global Interpreter Lock(GIL)的结构。GIL确保每次只能执行一个“线程”。一个线程获取GIL执行相关操作,然后将GIL传递到下一个线程。虽然看起来程序被多线程并行执行,但它们实际上只是轮流使用相同的CPU核心。有这些GIL传递都增加了执行的开销。这意味着多线程并不能让程序运行的更快问题 Q8:Post和get区别?可用的回答 : 1. 请求数据 GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式 采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。 POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。 因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。 2、传输数据的大小 在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。 因此,在使用GET请求时,传输数据会受到URL长度的限制。 对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。 3、安全性 POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全, 上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上, 因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。 除此之外,GET请求提交的数据还可能会造成Cross-site requestfrogery攻击。 问题 Q9:Python里面match()和search()的区别?可用的回答 :re模块中match(pattern,string,flags),检查string的开头是否与pattern匹配。re模块中research(pattern,string,flags),在string搜索pattern的第一个匹配值。问题 Q10:请解释或描述一下Django的架构?可用的回答 : 对于Django框架遵循MVC设计,并且有一个专有名词:MVT M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架 V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎 算法题面试官常问到的一些算法题目整理如下(大概率会机考):算题题 A1:合并两个排序过的列表题目描述如下:合并两个排序过的数组。Input: 1-2-4, 1-3-4Output: 1-1-2-3-4-4基本就是你走一步我走一步,一人一个指向。O(n)测试用例:https:/ ListNode(object):# def _init_(self, x):# self.val = x# self.next = Noneclass Solution(object): def mergeTwoLists(self, l1, l2): :type l1: ListNode :type
阅读下列函数说明和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;
}
DNS客户向本机所配DNS服务器发出的为()查询,DNS服务器向其它DNS服务器发出的为()查询。
下面关于迭代评估的内容哪个是正确的()。
以下哪些是Python3相对于Python2的改动?()
在python中,生成器是特殊的迭代器。