公司名称:上海傲梦网络科技有限公司 公司地址:西安雁塔区团结南路中晶科技广场B座4层中晶岛 公司规模:500-999人 公司环境:下图 笔试:无 面试环节 1、 Python中的数据类型有哪些? Int bool str list tuple dict set 2、 什么是闭包函数? 在函数内部嵌套了一个函数,内函数使用了外函数的局部变量,并且外函数返回了内函数的引用,这样就构成了一个闭包 defoutfunc(a,b): def innerfunc(x): return x*a+b return innerfunc 3、 什么是装饰器?说几个装饰器的常用场景? 装饰器的作用:在不违反开放封闭的原则下对现有的函数进行功能扩充,比如插入日志、性能测试、事务处理、缓存、权限的校验等场景,有了装饰器就可以抽离出大量的与函数功能本身无关的雷同代码。函数计时的装饰器: 4、 TCP和UDP区别? UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息。 优点:UDP速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送 - 缺点:UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,也不重复发送,不可靠。 TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手 优点:TCP在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠。缺点:TCP相对于UDP速度慢一点,要求系统资源较多。 5、 说说三次握手,四次挥手的过程? 三次握手 1. 建立连接时,客户端发送SYN包到服务器 2. 服务器收到请求后,会向客户端发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。 3、客户端收到服务器的SYN+ACK包,向服务器发送一个序列号(seq=x+1),确认号为ack(客户端)=y+1,此包发送完毕,客户端和服务器进入ESTAB_LISHED(TCP连接成功)状态,完成三次握手 四次挥手 1. 首先,客户端发送一个FIN,用来关闭客户端到服务器的数据传送,然后等待服务器的确认 2. 服务器收到这个FIN,它发送一个ACK,确认ack为收到的序号加一。 3. 关闭服务器到客户端的连接,发送一个FIN给客户端 4. 客户端收到FIN后,并发回一个ACK报文确认,并将确认序号seq设置为收到序号加一。客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,才进入CLOSED状态。 5. 服务器只要收到了客户端发出的确认,当前连接立即进入CLOSED状态。 6、 面向对象中怎么实现只读属性? 属性私有化 - property 7、单例模式的应用场景有哪些? 单例模式应用的场景一般发现在以下条件下 1. 资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如日志文件,应用配置。 2. 控制资源的情况下,方便资源之间的互相通信。如线程池等。 - 网站的计数器 - 应用配置 - 多线程池 - 数据库配置,数据库连接池 - 应用程序的日志应用 8、什么是死锁? 若干子线程在系统资源竞争时,都在等待对方对某部分资源解除占用状态,结果是谁也不愿先解锁,互相干等着,程序无法执行下去,这就是死锁。 GIL全局解释器锁(cpython):限制多线程同时执行,保证同一时刻只有一个线程执行,所以cpython里的多线程其实是伪多线程!所以Python里常常使用协程技术来代替多线程,协程是一种更轻量级的线程,进程和线程的切换时由系统决定,而协程由我们程序员自己决定,而模块gevent下切换是遇到了耗时操作才会切换。 三者的关系:进程里有线程,线程里有协程 9、简单说下同步,异步,阻塞,非阻塞? - 同步:多个任务之间有先后顺序执行,一个执行完下个才能执行。 - 异步:多个任务之间没有先后顺序,可以同时执行 - 阻塞:卡住调用者,调用者不能继续往下执行 - 非阻塞:调用者不会卡住,可以继续执行,就是说非阻塞的。 10、知道线程池吗?有什么特点? 1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2. 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 3. 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控 11、Python中类方法、类实例方法、静态方法有何区别? - 类方法:是类对象的方法,在定义时需要在上方使用“@classmethod”进行装饰,形参为 cls, 表示类对象,类对象和实例对象都可调用; - 类实例方法:是类实例化对象的方法,只有实例对象可以调用,形参为self,指代对象本身; - 静态方法:是一个任意函数,在其上方使用@staticmethod”进行装饰,可以用对象直接调用, 静态方法实际上跟该类没有太大关系
面试总结:面试的是一个Python讲师岗位,问的问题比较多,偏基础的比较多,保持心态,有礼貌,认真回答。
|