西安宝德自动化股份有限公司8月招聘面试题85道2020814

西安宝德自动化股份有限公司8月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:什么是socket?简述基于tcp协议的套接字通信流程?可用的回答 : 套接字: 也称为BSD套接字,是支持TCP/IP的网络通信的基本操作单元, 可以看做是不同主机之间的进程进行双向通信的端点, 简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题 通信流程: 1. 服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听。 2. 用 bind 函数来绑定一个端口号和 IP 地址。 因为本地计算机可能有多个网址和 IP,每一个 IP 和端口有多个端口。需要指定一个 IP和端口进行监听。 3. 服务器调用 listen 函数,使服务器的这个端口和 IP 处于监听状态,等待客户机的连接。 4. 客户机用 socket 函数建立一个套接字,设定远程 IP 和端口。 5. 客户机调用 connect 函数连接远程计算机指定的端口。 6. 服务器用 accept 函数来接受远程计算机的连接,建立起与客户机之间的通信。 7. 建立连接以后,客户机用 write 函数向 socket 中写入数据。也可以用 read 函数读取服务器发送来的数据。 8. 服务器用 read 函数读取客户机发送来的数据,也可以用 write 函数来发送数据。 9. 完成通信以后, 用 close 函数关闭 socket 连接。 问题 Q2:json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?可用的回答 :json.dumps函数方法中加上参数 ensure_ascii = False问题 Q3:scrapy和requests的使用情况?可用的回答 : requests 是 polling 方式的,会被网络阻塞,不适合爬取大量数据 scapy 底层是异步框架 twisted ,并发是最大优势 问题 Q4:列举面向对象中带双下划线的魔术方法可用的回答 : _doc_ 表示类的描述信息 _module_ 表示当前操作的对象在哪个模块 _class_ 表示当前操作的对象的类是什么 _init_ 构造方法,通过类创建对象时,自动触发执行 _new_负责创建一个类的对象 _del_ 析构方法,当对象在内存中被释放时,自动触发执行 _call_ 对象后面加括号,触发执行 _dict_ 类或对象中的所有成员 _str_如果一个类中定义了_str_方法,那么在打印 对象 时,默认输出该方法的返回 问题 Q5:描述数组、链表、队列、堆栈的区别?可用的回答 : 数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据; 队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出; 队列和堆栈可以用数组来实现,也可以用链表实现。 问题 Q6:Python中的self是什么?可用的回答 :self是类的实例或对象。在Python中,self包含在第一个参数中。init方法中的self变量引用新创建的对象,而在其他方法中,它引用其方法被调用的对象。问题 Q7:json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?可用的回答 :json.dumps函数方法中加上参数 ensure_ascii = False问题 Q8:生成器?可用的回答 :生成器的本质就是一个逐个返回元素的函数,即“本质函数”最大的好处在于它是“延迟加载”,即对于处理长序列问题,更加的节省存储空间。即生成器每次在内存中只存储一个值问题 Q9:Python里面match()和search()的区别?可用的回答 :re模块中match(pattern,string,flags),检查string的开头是否与pattern匹配。re模块中research(pattern,string,flags),在string搜索pattern的第一个匹配值。问题 Q10:说一下Django,MIDDLEWARES中间件的作用?可用的回答 : 中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。 算法题面试官常问到的一些算法题目整理如下(大概率会机考):算题题 A1:使用栈模拟队列题目描述如下:可做参考的解答如下:class Queue: def _init_(self): self.stack_one = Stack() self.stack_two = Stack() def push(self, value): if self.stack_two.empty(): self.stack_two.push(value) else: self.stack_one.push(value) def pop(self): pop_result = self.stack_two.pop() if self.stack_two.empty(): while 1: if self.stack_one.empty(): break self.stack_two.push(self.stack_one.pop() return pop_result def peek(self): return self.stack_two.get_top()queue = Queue()queue.push(1)queue.push(2)queue.push(3)print(queue.pop()queue.push(4)print(queue.pop()print(queue.pop()print(queue.pop()算题题 A1:从链表尾中删除第N个节点题目描述如下:Given a linked list, remove the n-th node from the end of list and return its head.Example:Given linked list: 1-2-3-4-5, and n = 2.Aft

更多 “西安宝德自动化股份有限公司8月招聘面试题85道2020814” 相关考题