以下内容来自于应聘者回忆整理
很多同学都想得到360的实习或者校招机会。那从过来人的角度谈谈,要通过360的实习、校招面试,都有哪些经验和注意事项呢?今天就跟大家分享一下。
【一面】
1、没有自我介绍
2、Django 和其他框架的大致区别
(1)Django框架和Flask框架的对比:Flask是小而精的微框架,它不像Django那样大而全,如果使用Flask开发,开发者需要自己决定使用那个数据库ORM、模块系统、用户认证系统等,需要自己组成。与采用Django开发对比,开发者在项目开始的时候可能需要花费更多的时间去了解、挑选各个组件,因此Flask开发的灵活度更高,开发者可以根据自己的需要去选择合适的插件。当然Flask历史相对较短,第三方APP自然没有Django那么全面。
(2)Django框架和Tornado框架的对比:Tornado是一个Python Web框架和异步网络库,最初由FriendFeed 开发,其设计目的主要是为了解决10000个并发连接问题。传统的Apache服务器会为每个HTTP请求连接一个线程,大多数Linux发行版本中默认线程堆大小是8MB,连接数量过多时,这种线程池的方式极易耗光服务器所有资源。而Tornado会把等待资源的操作挂起,当数据准备好时,再回调相应函数。
(3)和Django对比,使用Tornado编写异步代码对于开发者来说,没有Django或Flask编写同步代码那么简单、直接和高效。
3、为什么选用Django 4,Django 的请求响应流程请求在Django中实际上是视图函数的第一个参数request,即HttpRequest对象,常用request属性:
path_info: 请求路由地址
method: 请求方法
GET: QueryDict类查询字典,包含GET请求的所有数据
POST: QueryDict类查询字典,包含POST请求的所有数据
FILES: 类似字典对象,包含上传文件的信息
5、MySQL 存储引擎有哪些?
MySQL 提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。. 在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。. MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE 等。. 可以使用 SHOW ENGINES; 语句查看系统所支持的引擎类型,结果如图所示。. Support 列的值表示某种引擎是否能使用, YES 表示可以使用, NO 表示不能使用, DEFAULT 表示该引擎为当前默认的存储引擎。.
6、为什么选用 Innodb?
支持事务处理和故障恢复
7、Linux 熟悉不?怎么查看进程使用?
8、一个进程你一般关注什么量?
9、什么是僵尸进程?
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程
10、了解图论吗?
11、用过装饰器吗?
12、用过 gevent 吗?
13、说一下协程
14、为什么要进行四次挥手?
15、两个栈实现队列
16、用过 elasticsearch 吗?
17、爬虫深度了解吗?
18、反爬策略用过哪些?
19、如何实现需要登录的网站爬取?
20、session 和 cookie 的区别
作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。 存取方式的不同,Cookie 只能保存ASCII,Session 可以存任意数据类型,一般情况下我们可以在Session 中保持一些常用变量信息,比如说UserId 等。
21、哈希索引和 B 树索引的区别
(1)在查询速度上,如果是等值查询,那么Hash索引明显有绝对优势,因为只需要经过一次 Hash 算法即可找到相应的键值,复杂度为O(1);当然了,这个前提是键值都是唯一的。如果键值不是唯一(或存在Hash冲突),就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据,这时候复杂度会变成O(n),降低了Hash索引的查找效率。所以,Hash 索引通常不会用到重复值多的列上,比如列为性别、年龄的情况等(当然B+tree索引也不适合这种离散型低的字段上)。
(2)Hash 索引是无序的,如果是范围查询检索,这时候 Hash 索引就无法起到作用,即使原先是有序的键值,经过 Hash 算法后,也会变成不连续的了。因此
①Hash 索引只支持等值比较查询、无法索成范围查询检索,B+tree索引的叶子节点形成有序链表,便于范围查询。
②Hash 索引无法做 like ‘xxx%’ 这样的部分模糊查询,因为需要对 完整 key 做 Hash 计算,定位bucket。而 B+tree 索引具有最左前缀匹配,可以进行部分模糊查询。
③Hash索引中存放的是经过Hash计算之后的Hash值,而且Hash值的大小关系并不一定和Hash运算前的键值完全一样,所以数据库无法利用索引的数据来避免任何排序运算。B+tree 索引的叶子节点形成有序链表,可用于排序。
(3)Hash 索引不支持多列联合索引,对于联合索引来说,Hash 索引在计算 Hash 值的时候是将索引键合并后再一起计算 Hash 值,不会针对每个索引单独计算 Hash 值。因此如果用到联合索引的一个或者几个索引时,联合索引无法被利用;
(4)因为存在哈希碰撞问题,在有大量重复键值情况下,哈希索引的效率极低。B+tree 所有查询都要找到叶子节点,性能稳定;
场景区分
(1)大多数场景下,都会有组合查询,范围查询、排序、分组、模糊查询等查询特征,Hash 索引无法满足要求,建议数据库使用B+树索引。
(2)在离散型高,数据基数大,且等值查询时候,Hash索引有优势。
22、中间人攻击的发生场景?
23、最近关注的新技术?
24、你有什么想问我的?
总结:以上为一面,大约 50 分钟左右
想要更多360的实习、校招机会,请点击这里