秋招知识点汇总

Python

1.Python实现单例模式

1.1.为什么要用单例模式

在系统中确保某个对象的唯一性,即一个类只能有一个实例有时是非常重要的。
举例:1.Windows任务管理器,多个打开如果内容一致,重复对象,造成浪费。内容不一致,存在至少一个窗口内容错误,造成误解。
2.一个项目中多个地方需要读取同一份配置文件,如果每次使用都重新创建实例导致IO浪费。
3.一个网站的访问量、在线人数,在项目中是全局唯一。

1.2.如何写单例模式

1.使用__new__

class User:
    _instance = None
    def __new__ = (cls, *args, **kwargs):
        if not cls._instance:
            cls._instance=super().__new__(cls)
        return cls._instance
        
    def __init__(self,name):
        self.name=name

2.使用装饰器

instance={}

def singleton(cls):
    def get_instance(*args,**kwargs):
        cls_name=cls.__name__
        if not cls_name in instances:
            instance=cls(*args,**kwargs)
            instances[cls_name]=instance
        return instances[cls_name]
    return get_instance

@singleton
class User:
    _instance=None
    
    def __init__(self,name):
        self.name=name

3.使用元类(略,不会)

1.3.线程安全(加线程锁)

import threading

def synchornized(func):
    
    func.__lock__ = threading.Lock()
    
    def lock_func(*args,**kwargs):
        with func.__lock__:
            return func(*args,**kwargs)
    
    return lock_func
    
class User:
    _instance = None
    
    @synchornized
    def __new__ = (cls, *args, **kwargs):
        if not cls._instance:
            cls._instance=super().__new__(cls)
        return cls._instance
        
    def __init__(self,name):
        self.name=name

1.4.单例模式优缺点

优点:
1.全局只有一个接入点,可以更好的进行数据同步控制,避免多重占用;
2.由于单例模式要求全局内只有一个实例,因而可以节省比较多的内存空间;
3.单例可常驻内存,减少系统开销
缺点:
1.由于单例对象是全局共享,状态维护需要特别小心,一处修改影响全局
2.单例对象没有抽象层,扩展不便
3.赋予单例太多职责,违反单一职责原则
4.单例在并发协作软件模块中需要最先完成,不利于测试
5.单例模式在某种情况会导致资源瓶颈

2.GIL

Linux

1.常见命令

1.1.关机

查看有没有其他用户在线:who
内存同步到磁盘:sync
关机:shutdown [-krhc] time message
    -k:只发送警告信息
    -r:重新启动
    -h:关机
    -c:取消正在进行的shutdown命令

1.2.文件与目录

列出文件或者目录的信息:ls [-adl] file|dir
    -a:列出全部的文件
    -d:仅列出目录本身
    -l:以长数据串行列出
更换当前目录:cd
创建目录:mkdir [-mp] path
    -m:配置目录权限
    -p:递归创建目录
删除目录(目录必须为空):rmdir [-p] path
    -p:递归删除目录
更新文件时间或创建新文件:touch [-acdmt] filename
    -a: 更新atime【读取时间记录】
    -c:更新ctime,若该文件不存在则不创建新文件
    -m:更新mtime【修改时间记录】
复制文件:cp [-adpr] source destination
    -a:相当于 -dpr
    -d:复制时保留链接
    -p:复制文件属性
    -r:递归复制
删除文件:rm [-fir] file|dir
    -r:递归删除
移动文件:mv [-fiu] source destination
    -f:强制覆盖

1.3.获取文件内容

取得文件内容:cat [-AbEnTv] filename
    -n:打印行号,包括空白行
    -b:打印行号,不包括空白行
反向打印文件内容(从最后一行开始):tac
按页查看文件内容:more、less(可以向前翻页)
取得文件前几行:head [-n] filename
    -n:后面接数字,代表显示行数
取得文件后几行:tail
以字符或16进制显示二进制文件:od

1.4.指令与文件搜索

指令搜索:which [-a] command
    -a:列出所有指令
特定目录搜索文件(二进制、源代码、man手册):whereis [-bmsu] filename
文件搜索(查数据库,非实时):locate [-ir] keyword
    -r 正则
磁盘文件搜索:find [basedir] [option]
    -mtime n|+n|-n:列出【n天前那一天|n天前(不含n)|n天之内(含n)】修改过内容的文件
    -uid n|-gid n|-user name|-group name:列出对应拥有者和所属群组的文件
    -name filename
    -size [+-]
    -type TYPE

1.5.压缩与打包

打包压缩:tar [-z|-j|-J] [cv] [-f 新建的tar文件] filename...
查看:tar [-z|-j|-J] [tv] [-f 已有的tar文件]
解压缩:tar [-z|-j|-J] [xv] [-f 已有的tar文件] [-C 目录]
    -z|-j|-J:使用zip|bzip2|xz
    -c:新建打包文件
    -t:查看打包文件
    -x:解压缩
    -v:在处理过程中,显示正在处理的文件名
    -f:要处理的文件
    -C:在特定目录解压缩

1.6.进程管理

查看自己进程:ps -l
查看系统进程:ps aux
查看所有进程树:pstree -A
实时显示进程:top
查看占用端口的进程 netstat

MySQL

1.索引

索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。

1.1.B+Tree

数据结构:基于B Tree,也就是平衡树实现的,叶子结点间存在顺序访问指针。
特点:是大多数MySQL存储引擎的默认索引类型;
有序,可以用于排序和分组;
可以指定多个列作为索引列,共同组成键
适用于全键值、键值范围和键前缀查找
存储引擎:InnoDB 聚簇索引(辅助索引依靠主键)、MyISAM 非聚簇索引(相互独立,只存储地址)

1.2.哈希索引

查找O(1)时间复杂度,但失去有序性,无法排序,只能精确查找
InnoDB 自适应哈希索引:某个索引值使用非常频繁,会在B+Tree的索引上再创建一个哈希索引

1.3.全文索引

MyISAM特性,使用倒排索引实现。

1.4.怎么知道一条语句是否使用了索引

explain函数key关键字
key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MySQL会选择优化不足的索引。这种情况下,可以在Select语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MySQL忽略索引;

1.5.MySQL

2.存储引擎

比较:

特性 InnoDB MyISAM
事务 支持 不支持
外键 支持 不支持
索引结构 聚集索引 非聚集索引
行级、表级 只支持表级
压缩表 不支持 支持
全文搜索 支持(旧版本不支持) 支持

3.乐观锁和悲观锁

3.1.乐观锁

假设最好的情况,别人不会修改数据,更新的时候会判断别人有没有更新数据,可以使用版本号和CAS算法实现,适用于多读的场景,可以提高吞吐量。
CAS算法:读内存V预设值A,若A再次读取时没有发生变化,更新为更新值B。缺点:ABA问题、循环时间开销时长大

3.2.悲观锁

假设最坏的情况,每个人都会修改数据,所以每次拿数据都会上锁,别人想拿就会阻塞知道他拿到锁。(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)实现:synchronized

4.

计算机网络

1.五层网络协议体系结构的理解

  • 应用层:通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等等。我们把应用层交互的数据单元称为报文。
  • 传输层:主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个传输层服务。
  • 网络层:在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP / IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报,简称数据报。
  • 数据链路层:数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如:同步信息,地址信息,差错控制等)。
    在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。控制信息还使接收端能够检测到所收到的帧中有无差错。如果发现差错,数据链路层就简单地丢弃这个出了差错的帧,以避免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在链路层传输时出现差错(这就是说,数据链路层不仅要检错,而且还要纠错),那么就要采用可靠性传输协议来纠正出现的差错。这种方法会使链路层的协议复杂些。
  • 物理层:在物理层上所传送的数据单位是比特。物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

TCP/IP中数据链路层和物理层合并为网络接口层。

2.传输层

2.1.UDP和TCP的特点

  • UDP:用户数据报协议,无连接,尽最大可能交付,没有拥塞控制,面向报文,支持一对一,一对多,多对多的交互通信
  • TCP:传输控制协议,面向连接,提供可靠支付,有流量控制,拥塞控制,提供全双工通信,面向字节流,点对点连接

2.2.TCP三次握手

A:客户端 B:服务器端

  • B处于Listen状态
  • A向B发送连接请求报文,SYN=1,ACK=0,初始序号x
  • B收到连接请求报文,同意连接,向A发送连接确认报文,SYN=1,ACK=1,确认号为x+1,选择初始序号y
  • A收到B的连接确认报文后,向B确认,确认号为y+1,序号为x+1
  • B收到A的确认,连接建立

三次握手的原因:第三次握手是为了防止失效的连接请求发送到服务器,让服务器错误打开链接。

2.3.TCP四次挥手

  • A发送连接释放报文,FIN=1
  • B收到之后发出确认,TCP属于半关闭状态,B能向A发送数据但是A不能向B发送数据
  • B不再需要连接时,发送连接释放报文,FIN=1
  • A收到后发出确认,进入TIME-WAIT状态,等待2 MSL(最大报文存活时间)后释放连接。
  • B收到A的确认后释放连接。

四次挥手的原因:客户端发送了FIN之后,服务器收到报文,进入CLOSE-WAIT状态,是为了让服务器发送还未传输完毕的数据,传输完毕后,服务器发送FIN。
TIME_WAIT:客户端接收到服务器FIN后进入此状态,这么做有两个理由:

  • 确保最后一个确认报文能够到达。如果B没有收到A发送来的报文,那么就会重新发送FIN请求。
  • 让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新连接不会出现旧的连接请求报文

2.4. TCP协议是如何保证可靠传输的

  1. 数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时 TCP 发送数据端超时后会重发数据;
  2. 对失序数据包重排序:既然 TCP 报文段作为 IP 数据报来传输,而 IP 数据报的到达可能会失序,因此 TCP 报文段的到达也可能会失序。TCP 将对失序数据进行重新排序,然后才交给应用层;
  3. 丢弃重复数据:对于重复数据,能够丢弃重复数据;
  4. 应答机制:当 TCP 收到发自 TCP 连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;
  5. 超时重发:当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;
  6. 流量控制:TCP 连接的每一方都有固定大小的缓冲空间。TCP 的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP 使用的流量控制协议是可变大小的滑动窗口协议。

3.HTTP

3.1.HTTP状态码

状态码 类别 含义
1xx Informational(信息性状态码) 请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 需要附加操作
4xx Client Error(客户端错误状态码) 服务器无法处理请求
5xx Server Error(服务器错误状态码) 服务器处理请求出错

100 Continue

200 OK
204 No Content:成功处理但是没有返回主体数据
206 Partial Content:客户端进行了范围请求

301 Moved Permanently:永久性重定向
302 Found:临时性重定向
303 See Other:与302相同,明确要求客户端采用GET方法
304 Not Modified:请求报文包含一些条件,不满足条件则返回
307 Temporary Redirect:与302相似,要求浏览器不把POST改为GET

400 Bad Request:请求报文中存在语法错误
401 Unauthorized:发送的请求需要认证信息
403 Forbidden:请求被拒绝
404 Not Found:没有请求的资源

500 Internal Server Error:服务器正在执行请求时发生错误
503 Service Unavailable:服务器暂时超负载或停机维护,无法处理请求

3.2.GET/POST

GET POST
作用 获取资源 传输实体主体
参数 ASCII码 标准字符集
安全 安全 不安全
幂等性* 幂等 不幂等
可缓存 不能

4.HTTPS

HTTPS=HTTP+SSL
对称加密
非对称加密

5.在浏览器中输入一个URL会发生什么?

  • 输入一个URL地址
  • 浏览器查找域名的IP地址:DNS查找
  • 建立链接:TCP三次握手
  • 浏览器给WEB服务器发送一个HTTP请求
  • 服务器返回浏览器301永久重定向响应
  • 浏览器跟踪重定向地址
  • 服务器处理请求:映射网站地址结构的文件层次存储
  • 服务器返回200和页面HTML文件
  • 关闭TCP链接:TCP四次挥手
  • 浏览器开始显示HTML
  • 浏览器发送获取嵌入HTML中的对象
  • 构建渲染树
  • 浏览器布局渲染

操作系统

算法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356