一、算法相关:
(1)熟悉常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、堆排序、快排、希尔排序
二、计算机网络相关
(1)http协议:
http(超文本传输协议)是一个在器客户端和服务器端之间基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。
无状态的含义:无状态协议对于事务处理没有记忆能力。无状态协议解决办法: 通过Cookie 或者通过Session会话保存
请求报文结构:
回复报文结构:
(2)http1.0与http1.1的区别
在http1.0中,当建立连接后,客户端发送一个请求,服务器端返回一个信息后就关闭连接,当浏览器下次请求的时候又要建立连接,在http1.1中,默认使用长连接,通过这种连接,浏览器可以建立一个连接之后,发送请求并得到返回信息,然后继续发送请求再次等到返回信息,也就是说客户端可以连续发送多个请求,而不用等待每一个响应的到来。长连接有一个保持时间
(3)http和https的区别
https的协议需要用到ca申请证书,因而需要一定的费用,http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议,http的默认端口是80,https的默认端口是443, http的连接是简单的,无状态,https是有SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
(4)get和post的区别
(5)cookie机制和session机制的区别
Cookie是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器。Cookies保存在客户端,主要内容包括:名字,值,过期时间,路径等等。
Session是在服务器端保存用户数据。服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户的信息。
区别:Cookie保存在客户端浏览器中,而Session保存在服务器上。Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。Cookie 在客户端(浏览器、易伪造、不安全),Session 在服务器端(会消耗服务器资源)
(6)输入一个URL,接下来会发生什么
查询DNS,获取域名对应的IP->得到目标IP以及端口号后,调用socket,请求一个TCP流套接字,客户端向服务端发送HTTP请求报文(三次握手)->服务端通过五层,解析请求报文,发送http响应报文->关闭连接(四次挥手)->客户端解析响应报文,并在浏览器显示
(7)tcp udp协议的区别,各自使用场景
a. tcp面向连接,udp是无连接的
b. tcp提供可靠的服务,udp尽最大努力交付
c. tcp是面向字节流的,tcp是把数据看成一连串的无结构的字节流,udp是面向报文的。Udp没有拥塞控制,适用于实时应用
d. 每条tcp连接只支持一对一,udp支持一对一,一对多,多对一,多对多
e. tcp首部开销20字节,udp只有8个字节
f. tcp建立起的是全双工的可靠信道,udp是不可靠的
(8)tcp的连接建立以及拆除过程
三次握手:
a. 第一次握手:建立连接是,客户端发送syn包到服务端,并进入syn_sent状态,等待服务器确认
b. 第二次握手:服务器收到syn包,必须确认客户的syn,同时自己也发送一个syn包,即syn+ack包,此时服务器进入syn_ack状态
c. 第三次握手:客户端收到服务器的syn+ack包,向服务器发送确认包ACK,此包发送完毕,连接正式建立
四次挥手:
a. 客户端A发送一个FIN包,用来关闭客户A到服务器B的数据传送
b. 服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1,和SYN一样,一个FIN将占用一个序号
c. 服务器B决定关闭与客户端A的连接,发送一个FIN给客户端A
d. 客户端A发回ACK报文确认,并将确认号设置为收到序号加1
(9)tcp保证可靠的四项措施
a. 确认和重传机制:建立连接时三次握手同步双方的序列号确认号、窗口大小等信息,传输过程中,如果检验失败、丢包、延时则重传
b. 数据排序
c. 流量控制:维持一个滑动窗口来确保不会发生发送太快来不及接收的问题
d. 拥塞控制:慢启动,拥塞避免,快速重传,快速恢复
(10)DNS如何解析出IP地址
a. 浏览器先检查自身缓存有没有解析过这个域名对应的ip,如果有解析结束
b. 浏览器检查系统缓存中有没有对应的解析的结果,hosts文件,如果有解析结束
c. 请求本地域名服务器(LDNS)来解析这个域名,如果命中,则解析结束
d. 请求根域名服务器(Root server),根域名服务器返回给LDNS一个所查询域的name server的地址,这个name server就是网站注册的域名服务器
e. name server 根据ip域名映射表找到目标ip,返回给LDNS
f. LDNS缓存这个域名对应的ip
g. LDNS将解析的结果返回给用户,用户缓存到本地的缓存中,解析结束
(11)五层网络架构
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输
数据链路层:负责建立和管理节点间的链路,通过各种控制协议,将有差错的物理信道编程无差错的,能可靠传输数据帧的数据链路
网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径
传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输
会话层:向两个实体的表示层提供建立和使用连接的方法
表示层:处理用户的表示问题,如编码,数据格式转换或者加密解密等
应用层:直接向用户提供服务
三、python语言
(1)python的垃圾回收机制
python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略。
(2)__new__和__init__的区别
__new__是用来创造一个类的实例的(constructor),而__init__是用来初始化一个实例的(initializer)。__new__所接收的第一个参数是cls,而__init__所接收的第一个参数是self。__new__函数首先被调用,构造了一个newStyleClass的实例,接着__init__函数在__new__函数返回一个实例的时候被调用,并且这个实例作为self参数被传入了__init__函数。
(3)python的伪多线程、多线程
(4)python连接数据库的方式
(5)python的装饰器,空集合与空元组有什么区别
(6)python GIL
(7)python语法糖,深拷贝、浅拷贝、装饰器
(8)is和==的区别
is比较的是两个对象的地址值,也就是说两个对象是否为同一个实例对象;而==比较的是对象的值是否相等,其调用了对象的__eq__()方法。
四、操作系统
(1)进程和线程的区别
1.引入线程的系统当中,线程作为调度和分配的基本单位,进程是资源拥有的基本单位 2.并发性 进程间可以并发,同一进程的多个线程间可以并发,提高了进程的并发度 3.拥有资源,线程不拥有自己的资源,但可以访问其隶属进程的资源 4.系统开销:线程切换仅需保存少量寄存器内容,不涉及存储器管理方面的操作,因此代价小于进程切换代价
(2)内存分配的几种方式
a. 静态存储区:从全局存储区域分配:这时内存在程序编译阶段就已经分配好,该内存在程序运行的整个周期都有效,如:全局变量、static静态变量。
b. 栈:栈(stack):存放程序临时创建的局部变量,不包括static声明的变量,static意味着在数据段中存放。除此之外,当函数被调用时,其参数也会被压到栈中,并在调用结束后,函数的返回值也会被放到栈中。栈由编译器自动释放。其操作方式类似于数据结构中的栈。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。
c. 堆:堆(heap):用于存放进程运行中被动态分配的内存段,大小不固定。当进程调用malloc或者new等函数时,新分配的内存就被动态添加到堆上(堆被扩张),当使用free或者delete等函数释放内存时,被释放的内存从堆中被删除。需要注意的是,它与数据结构中的堆是两回事,它的分配方式类似于链表。
(3)线程间的同步机制
1.互斥锁 ,类似于整型信号量,S=1,容易引起死锁 2.条件变量 进入临界区后,若所需资源正处于忙碌状态,则等待,并开锁
(4)进程间的通信方式
1.共享存储器系统,进程间共享某些存储区和数据结构 2.消息传递系统 以格式化的消息为单位进行传递 3.管道通信,管道是进程间的一个共享文件
(5)死锁产生的条件
互斥条件 请求和保持条件 不剥夺条件 环路等待条件
(6)进程间的同步机制
a.信号量机制:1.整型信号量 S表示资源数目 2.记录型信号量 S>0表示可用资源数目,S<0表示被阻塞的进程的数目 3.AND型信号量 同时获取多个资源,一次性全部分配,只要一个不满足,就不分配 4.信号量集 AND型信号量的扩充,同种资源可能一次需要多个
b.管程:代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成的一个操作系统的资源管理模块
(7)进程的几种状态:就绪态 阻塞态 执行态
四、linux相关
(1)查找某个进程的ID,进程的端口号:ps –a|grep name
(2)查看log的命令
五、数据库
(1)SQL中drop/truncate/delete的区别
a. delete是dml, 执行delete时每次从表中删除一行,删除操作会被记录在redo和undo表中以便进行回滚,需要手动commit才能生效,可通过rollback撤销操作
b. truncate是DDL,会隐式提交,不能通过rollback回滚,不会触发触发器,会删除表中所有记录
(3)数据库事务的几个特性
a. 原子性:事务的原子性指的是bai,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
b. 一致性:事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2。
c. 分离性:分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。
d. 持久性:持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。
(4)索引数据结构
a. hash结构
b. 二叉搜索树
c. 红黑树
d. B树
e. B+树
六、测试相关
(1)设计测试用例的方法
a. 黑盒测试:等价类划分、边界值分析法、正交实验法、状态转移法、流程分析法、输入域测试法、输出域测试法、判定表分析法、因果图分析法、错误猜测法、异常分析法
b. 白盒测试: 静态测试,动态测试
(2)测试的相关流程
需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试
(3)软件质量的六个特征
a. 功能特征:满足明确或者隐含的需求的那些功能
b. 可靠特征:在规定的一段时间和条件下,软件能够维持其性能水平的能力
c. 易用特征:使用软件所需要的努力
d. 效率特征:软件的性能水平与所使用的资源量的关系
e. 可维护特征:进行制定的修改所需的努力
全部评论
(18) 回帖