可用于在不同主机的进程间通信的技术是()
A.管道
B.共享内存
C.消息队列
D.套接字
●Socket的通信方式包括 (62) , (63) 是最常用的套接字类型。
(62)、(63) A.字节流套接字
B.数据报套接字
C.原始数据报套接字
D.A、B和C
查看对象内存地址的Python内置函数是__________。
简单解释Python基于值的内存管理模式。
对于Python类中的私有成员,可以通过“对象名._类名__私有成员名”的方式来访问。
此题为判断题(对,错)。
咪咕文化科技有限公司3月招聘面试题面试题面试官常问到的一些题目整理如下:问题 Q1:如何解释Python?可用的回答 :Python语言是一种解释语言。Python程序直接从源代码运行。它将程序员编写的源代码转换为中间语言,再次转换为必须执行的机器语言。问题 Q2:如何在Python中内存管理?可用的回答 :Python内存由Python私有堆空间管理。 所有Python对象和数据结构都位于私有堆中。 程序员无权访问此私有堆,解释器负责处理此私有堆。 Python对象的Python堆空间分配由Python内存管理器完成。核心API提供了一些程序员编写代码的工具。 Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存并释放内存并使其可用于堆空间。问题 Q3:什么是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 连接。 问题 Q4:简述 三次握手、四次挥手的流程?可用的回答 : 三次握手: 初始状态:客户端A和服务器B均处于CLOSED状态,然后服务器B创建socket,调用监听接口使得服务器处于LISTEN状态,等待客户端连接。(后续内容用A,B简称代替) 1、A首先向B发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号seq=x(一般是随机的), 消息发送后,A进入SYN_SENT状态,SYN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为ack=x+1, 然后选定自己的初始序号seq=y(一般是随机的),确认消息发送后, B进 入SYN_RCVD状态,与连接消息一样,这条消息也不能携带数据,同时消耗一个序号。 3、A收到B的确认消息后,需要给B回复确认数据,这时TCP头部中的ACK标识位值为1, 确认序号是ack=y+1,自己的序号在连接请求的序号上加1,也就是seq=x+1, 此时A进入ESTABLISHED状态,当B收到A的确认回复后,B也进入ESTABLISHED状态, 至此TCP成功建立连接,A和B之间就可以通过这个连接互相发送数据了。 四次挥手: 初始状态:客户端A和服务器B之间已经建立了TCP连接,并且数据发送完成,打算断开连接, 此时客户端A和服务器B是等价的,双方都可以发送断开请求,下面以客户端A主动发起断开请求为例。(后续内 容用A,B简称代替) 1、A首先向B发送断开连接消息,这时TCP头部中的FIN标识位值为1,序号是seq=m,m为A前面正常发送数据最后一个字节序号加1得到的, 消息发送后A进入FNI_WAIT_1状态,FIN=1的报文段不能携带数据,但要消耗一个序号。 2、B收到A的断开连接请求需要发出确认消息,这时TCP头部中的ACK标识位值为1,确认号为 ack=m+1, 而自己的序号为seq=n,n为B前面正常发送数据最后一个字节序号加1得到的, 然后B进入 CLOSE_WAIT状态,此时就关闭了A到B的连接, A无法再给B发数据,但是B仍然可以给A发数据,同时B端通知上方应用层,处理完成后被动关闭连接。 然后A收到B的确认信息后,就进入了 FIN_WAIT_2状态。 3、B端应用层处理完数据后,通知关闭连接, B向A发送关闭连接的消息,这时TCP头部中的FIN和ACK标识位值均为1, 确认号ack=m+1,自己的序号为seq=k,消息发送后B进入LACK_ACK状态。 4、A收到B的断开连接的消息后,需要发送确认消息, 这是这时TCP头部中的ACK标识位值为1,确认号ack=k+1,序号为m+1(因为A向B发送断开连接的消息时消耗了一个消息号), 然后A进入TIME_WAIT 状态,若等待时间经过2MSL后,没有收到B的重传请求, 则表明B收到了自己的确认,A进入CLOSED状态, B收到A的确认消息后则直接进入CLOSED状态。至此TCP成功断开连接。 问题 Q5:.什么是关联查询,有哪些?可用的回答 :将多个表联合起来进行查询,主要有内连接、左连接、右连接、全连接(外连接)问题 Q6:描述数组、链表、队列、堆栈的区别?可用的回答 : 数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据; 队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出; 队列和堆栈可以用数组来实现,也可以用链表实现。 问题 Q7:def func(a,b=) 这种写法有什么坑?可用的回答 : def func(a,b=):
查看变量内存地址的Python内置函数是_________________。
Python采用的是基于值得自动内存管理方式。
此题为判断题(对,错)。
此题为判断题(对,错)。
A.流式套接字
B.数据报套接字
C.UDP套接字
D.TCP套接字
Socket的通信方式包括(62),(63)是最常用的套接字类型。
A.字节流套接字
B.数据报套接字
C.原始数据报套接字
D.A、B和C