自己没有准备,当天下午收到面试通知,第二天就面试,理所当然面试失败(原因也在于个人能力也不强),尽管如此,也要整理一下面试内容,方便以后复习
面试邀请的邮件里推荐了一大堆关于依图和依图老板的视频,强烈建议我观看,我看了,实际上对参加一面的学生来说没什么作用,因为前面的面试是技术面,面试官基本不问与技术不相关的东西。
问题1:Python2和Python3区别
Python3对Unicode字符的原生支持。
Python2中使用 ASCII 码作为默认编码方式导致 string 有两种类型 str 和 unicode,
Python3 只支持 unicode 的 string。print 语句被 Python3 废弃,统一使用 print 函数
xrange 函数被 Python3 废弃,统一使用 range 等浮点数除法操作符“/”和“//”的区别
“ / ”:
Python2:若为两个整形数进行运算,结果为整形,但若两个数中有一个为浮点数,则结果为
浮点数;
Python3: 为真除法,运算结果不再根据参加运算的数的类型。
“//”:
Python2:返回小于除法运算结果的最大整数;从类型上讲,与"/"运算符返回类型逻辑一致。
Python3:和 Python2 运算结果一样。
问题2:TCP三次握手
易懂的漫画讲解
用大白话讲什么是tcp三次握手
TCP的三次握手与四次挥手理解及面试题(很全面)
问题3:HTTP请求过程
域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户。
问题4:Python迭代器
Python3 迭代器与生成器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
问题5:Python生成器
Python3 迭代器与生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,
返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
问题6:网站的前后端分离
在后台与前端view之间新加一层node来做代理。
为什么要加node层
1)MVC严重阻碍了前端开发效率,也是后台无法集中于业务,解决方案是让前端来控制controller
2)前端来写controller,如果让前端再学一门后台语言代价太大,node是用js开发
3)前端来代理可以优化请求,合并请求,所有与页面交互的接口自己控制,能够提高前端的开发效率
问题7:linux负载监控 命令方式
问题8:http,https区别
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。 - Https协议握手阶段比较费时,会使页面的加载时间延长近。
问题9:mysql两个主要的数据引擎(Innodb, MyIASM)
- Innodb引擎提供了对数据库ACID事务的支持,并且还提供了行级锁和外键的约束。(该引擎在5.5后的MySQL数据库中为默认存储引擎。)
ACID : 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 - MyIASM引擎不提供事务的支持,也不支持行级锁和外键。所以执行写操作的时候需要锁定这个表,会导致效率降低。
如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎。
问题10:前端的数据流框架
RESTful Api和Json搭建前后台交互
问题11:Python中 *args **kwargs的区别
*args 用来将参数打包成tuple给函数体调用
**kwargs 打包关键字参数成dict给函数体调用
注意点:参数arg、 *args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)
这个顺序,否则程序会报错。
问题12:写个冒泡排序
public void bubbleSort(int[] arr){
if(arr==null || arr.length<2)
return ;
for(int i=arr.length-1; i>0; i--)
for(int j=0;j<i; j++)
if(arr[j]>arr[j+1])
swap(arr, j, j+1);
}