苏小研面试:一面(专业面)+二面(HR面)+三面(领导面)
苏小研考试:机考(行测+性格测试)
注:我参加的是2019秋招,三场面试连续面试。
一面:
1、xrange与range区别:
Xrange: list对象;一上来开辟一块很大的内存;
Range: 一个生成器;每次调用返回其中的一个值;内存效率更高;
要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。
2、如何创建一个字典变量:
添加键-值对
修改键值对
删除键值对
遍历字典:(注意:返回值与存储顺序不同)
for key, value in employers.items(): #遍历所有键-值对
print(key)
print(value)
for key in employers.keys(): #遍历所有键
print(key)
for value in employers.values(): #遍历所有值
print(value)
3、手撕代码:如何统计一堆数据中每个数据出现的频率?(用字典数据结构能减少算法复杂度)
略
4、直播协议:RTMP协议(Real Time Messaging Protocol)实时消息传输协议。
是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。
他有多种变种:
1.RTMP工作在TCP之上,默认使用端口1935;
2.RTMPE在RTMP的基础上增加了加密功能;
3.RTMPT封装在HTTP请求之上,可穿透防火墙;
4.RTMPS类似RTMPT,增加了TLS/SSL的安全功能;
5、session和cookie技术区别???
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
Cookie:
HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。
给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
Cookie功能需要浏览器的支持。记录用户访问次数。Cookie的不可跨域名性。
HTTP协议不仅是无状态的,而且是不安全的。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可能。使用HTTP协议传输很机密的内容是一种隐患。如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。
Session:
Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查
服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
两者的区别
1、cookie数据存放在客户端,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑性能应当使用cookie。
4、不同浏览器对cookie的数据大小限制不同,个数限制也不相同。
5、可以考虑将登陆信息等重要信息存放为session,不重要的信息可以放在cookie中。
两者的联系
1、都是用来记录用户的信息,以便让服务器分辨不同的用户。
2、可以搭配使用,但都有自己的使用局限,要考虑到安全和性能的问题
6、IOS七层作用
应用层:所有能产生网络流量的程序
表示层:数据的表示格式。比如数据的表示格式、数据的加密与解密和数据压缩格式等。会话层:会话层的作用是开启、关闭两个主机之间的连接,管理主机之间的连接等。该层的作用就是控制主机之间连接状态的,包括通信方式等。比如在QQ中,开启一个视频通话就相当于开启了一个会话。会话层更多的是在RPC中进行使用的。
传输层:该层定义了数据的传输协议。像数据到达的顺序、校验是否真正到达等,是需要运输层来实现的。
网络层:路由转发,负责不同网络之间转发数据包,根据IP协议,决定数据最终到哪里去(TCP协议和UDP协议。)
数据链路层:对物理层的数据进行校验处理等,同时通过MAC地址,在不同的网络设备之间进行通信。(ARP、IP、ICMP)
物理层:发送的是01比特位,传输的是二进制数据流。
TCP/IP协议采用4层结构,分别是应用层、传输层、网络层和链路层,每一层都呼叫它的下一层所提供的协议来完成自己的需求。
ppp:是一个在数据链路层的协议。名字叫点对点协议。用户拨号上网,互联网运营商对ppp
给些参数,然后配置网络层,这样就可以有临时ip进行上网,在结束时候,由ppp里的一个协议释放链接。
ARP协议的作用:主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。(问住我了)
7、http与https的区别:
1)、http是超文本传输协议,信息是明文传输,不安全;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
2)、http和https使用的是完全不同的连接方式,端口也不一样,前者是80,后者是443。
9、查询进程信息:ps –rf/-aux |grep 16923
10、写几句mysql语句,我写的最基本的增删改查?
表操作
创:(auto_increment表示自动增长)
python中lambda怎么使用create table students(
id int auto_increment primary key,
sname varchar(10) not null,
sex varchar(10) not null,
join_time datatime not null
);
改:alter table students add birthday datetime;
删:drop table 表名;
数据操作:
增:insert into student values(1,’桑倩’,’女’,now())
删:d elete from students where sex = ‘男’;
改:update students sex=‘男’ where sname=’张三’;
查:select * from students where id>3;
排:select * from 表名order by列1 asc|desc,列2 asc|desc,.
聚合函数:select max(id) from students where gender=0;
检索出员工工资最高的员工姓名和工资
select * from user where employee_salary= (select max(employee_salary) from user);(为什么不是EMPLOYEES)
11、正则表达式?
从文本搜索字符串、字符串替换
正则表达式是用匹配或者描述字符串的工具。
用处:
a.判断字符串是否满足某个条件---判断输入的字符串是否是邮箱/手机号码。是否是ip地址
b.提取满足条件的字符串
c.字符串替换
grep、sed、find等linux命令要会。
12、Python导包顺序以及机制?
1. python首先会去寻内置(built_in)的包(.py 所在文件的目录)
2. 然后按照PYTHONPA TH环境变量中指定的路径,按顺序搜索。
3. 再就是按照能被python解释器识别到的.pt件中指定的路径去搜索。
对于后面两点,可以通过sys.path来一起查看(解释器在启动时会通过site.py创建sys.path)
13、在浏览器输入网址发生了什么详细过程
浏览器查域名的IP地址(域名就是指输入的网址)
浏览器缓存–浏览器会缓存DNS记录一段时间。有趣的是,操作系统没有告诉浏览器储存DNS记录的时
间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。路由器缓存–接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。
ISP DNS 缓存–接下来要check的就是ISP缓存DNS的服务器。在这一般都能到相应的缓存记录。
递归搜索–你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从顶级域名服务器到Facebook的域名服务器。一般DNS服务器的缓存中会有域名服务器中的域名。
14、lambda作为一个表达式,定义了一个匿名函数;使用lambda函数能够创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤;例:
f = lambda x,y:x+y # 求两个函数的和。 x,y是参数,x+y是函数返回值
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
print (list(map(lambda x: x * 2 + 10, foo)))
#[14, 46, 28, 54, 44, 58, 26, 34, 64]
15、浏览器如何访问网页?ip路由如何访问内网?(源地址、目的地址,MAC地址不变)
网关:每个计算机都要配网关,网关就是决定从一个网段到另一个网段给谁?
网站里的网页如何到客户端的?
16、Python中的内置数据结构:列表list、元组tuple、字典dict、集合set,涵盖的仅有部Python的可变数据类型:列表list、字典dict、集合set
Python的不可变数据类型:元组Tuple,一经初始化,就不能修改,只能对元素进行查询。因为tuple不可变,所以代码更安全。
(数据类型:
python3中有六个标准的数据类型:number(数字型:int、float、bool)、string(字符串型)、list(列表)、type(元祖)、dictionary(字典)、set(集合)
什么可变数据类型和不可变数据类型:
可变数据类型:value值改变,id值不变;不可变数据类型:value值改变,id值也随之改变。
可变类型:list、dict、set()
不可变类型:数值型、str、tuple)
17、python是怎么进行内存管理的?
1)引用计数:python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。
2)垃圾回收:当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。
3)内存池机制:用于管理对小块内存的申请和释放。
18、python中如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)
浅拷贝:copy模块的copy()函数
深拷贝:copy模块的deep.deepcopy()函数
19、请写一段脚本,查/data/test 目录下3天前的文件,从中挑选出大小超过10M的删除掉。
#!/bin/sh
find "/data/test" -mtime +3 -size +10M -exec rm {} \
20、描述数组、链表、队列、堆栈的区别?
数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据;
队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出;队列和堆栈可以用数组来实现,也可以用链表实现。
21、post()与get()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论