面试总结


1.遍历字典

for k,v in dic.items()

2.什么叫闭包?

函数内部调用函数外部(局部)的变量

3.在调用一个函数中,如何结束本程序?

quit() sys.exit() exit() 让函数抛出异常

4.交换机和路由器的区别?

交换机的主要功能是组织局域网, 经过交换机内部处理解析信息之后, 将信息以点对点,点对多的形式传给固定端

路由器: 跨网段进行数据传输,路由选择最佳路径

5.针对 使用UDP协议发送数据,一次收发大小究竟多少合适?

udp不会发生粘包,udp协议本层对一次收发数据大小的限制是:

​ 65535 - ip包头(20) - udp包头(8) = 65507

站在数据链路层, 因为网卡的MTU 一般被限制在了1500, 所以对数据链路层来说,一次收发数据的大小被限制在

​ 1500 - ip包头(20) - udp包头(8) = 1472

得到结论:

​ 如果sendto(num)

​ num > 65507 就会报错

​ 1472 < num < 65507 会在数据链路层拆包,而udp本身就是不可靠协议, 所以一旦

拆包之后, 造成的多个小数据包在网络传输中,如果丢任何一个, 那么此次数据传输就会失败

​ num < 1472 是比较理想的状态

6.面试题

"""
编写Python脚本,分析xx.log文件,按域名统计访问次数

xx.log文件内容如下:
https://www.sogo.com/ale.html
https://www.qq.com/3asd.html
https://www.sogo.com/teoans.html
https://www.bilibili.com/2
https://www.sogo.com/asd_sa.html
https://y.qq.com/
https://www.bilibili.com/1
https://dig.chouti.com/
https://www.bilibili.com/imd.html
https://www.bilibili.com/

脚本输出:
4 www.bilibili.com
3 www.sogo.com
1 www.qq.com
1 y.qq.com
1 dig.chouti.com
"""

import re
from collections import Counter


with open("xx.log") as f:
    data = f.read()

ym_list = re.findall(r'https://(.*?)/.*?', data)
ym_dict = dict(Counter(ym_list))
ret = sorted(ym_dict.items(), key=lambda x: x[1], reverse=True)
print(ret)
for i in ret:
    print(i[1], i[0])
1. 谈谈你对面向对象的理解?
对象 = 数据 + 方法
2. Python面向对象中的继承有什么特点?
继承的优点:

  1、建造系统中的类,避免重复操作。
  2、新类经常是基于已经存在的类,这样就可以提升代码的复用程度。
继承的特点:
  1、在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。有别于C#
  2、在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
  3、Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
3. 面向对象深度优先和广度优先是什么?

必须得了解:
MRO
深度优先 广度优先 C3算法  => http://python.jobbole.com/85685/

4. 面向对象中super的作用?
    在子类中执行父类的方法
5. 列举面向对象中特殊成员(带双下划线的特殊方法,如:__new__、__init__、__call__等)
    __new__(): 开辟空间,创建对象
    __init__(): 初始化对象,对象属性的赋值
    __call__(): 对象()直接执行的代码
    __str__(): print(对象)时执行的
    __repr__(): 解释器环境下直接输入对象展示的内容
    __len__(): len()
    __del__(): 析构
    __hash__():
    __eq__():
    __setitem__():
    __getitem__():
    __delitem__():
6. 静态方法和类方法区别?
    顾名思义,类方法就是Python类的方法,是这个类可以调用的方法,那么参数需要把这个类本身传进去,不需要实例化就可以使用。静态方法是类中的一个普通函数或者说方法,那么参数和普通的传参一样,类或者实例化的对象都可以直接使用它,也就是说这个静态方法也不需要实例化就可以调用。

Author: 二哈君
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source 二哈君 !
 Previous
网络编程_并发编程 网络编程_并发编程
一.操作系统理论 计算机的硬件组成 主板 固化(寄存器, 是直接和cpu进行交互的一个硬件) cpu 中央处理器: 计算 (数字计算和逻辑计算) 和控制 (控制所有硬件协调工作) 存储 硬盘, 内存 输入设备 键盘
2021-02-05 二哈君
Next 
网络编程 网络编程
一.网络基础​ 1.网络基础相关的知识 ​ (1) 架构 ​ a. C/S 架构 : client 客户端 和 server 服务器端 ​ 优势: 能充分发挥PC机的
2020-11-25 二哈君
  TOC