学习笔记
分享学习经验,记录生活点滴

依图春招实习面试总结(系统支持实习生)

自己没有准备,当天下午收到面试通知,第二天就面试,理所当然面试失败(原因也在于个人能力也不强),尽管如此,也要整理一下面试内容,方便以后复习

面试邀请的邮件里推荐了一大堆关于依图和依图老板的视频,强烈建议我观看,我看了,实际上对参加一面的学生来说没什么作用,因为前面的面试是技术面,面试官基本不问与技术不相关的东西。

问题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负载监控 命令方式

Linux负载监控常用指令

问题8:http,https区别

  1. http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  2. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    http的连接很简单,是无状态的。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)
    Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
  3. Https协议握手阶段比较费时,会使页面的加载时间延长近。

问题9:mysql两个主要的数据引擎(Innodb, MyIASM)

  1. Innodb引擎提供了对数据库ACID事务的支持,并且还提供了行级锁和外键的约束。(该引擎在5.5后的MySQL数据库中为默认存储引擎。)
    ACID : 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
  2. 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);
}
赞(7) 打赏
未经允许不得转载:ABCLearning » 依图春招实习面试总结(系统支持实习生)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云限时红包 助力一步上云

了解详情领取红包

觉得文章有用就打赏一下文章作者

微信扫一扫打赏