A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 就业高冷派 黑马粉丝团   /  2018-8-25 17:28  /  10764 人查看  /  148 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

公司名称:北京仁科互动网络技术有限公司
公司地址:西安雁塔区中晶科技广场A23
公司规模:500-999人
公司环境:下图

笔记:无
面试环节:
1、 Q:你用过哪些框架?
A:Flask框架、Django、Scrapy框架
2、Q:说说你对MVC和MVT的理解?
A:MVC简介:
M:Model,模型,和数据库进行交互
V:View,视图,负责产生 Html 页面
C:Controller,控制器,接收请求,进行处理,与 M 和 V 进行交互,返回应答。
MVT简介:
M:Model,模型,和 MVC 中的 M 功能相同,和数据库进行交互。
V:view,视图,和 MVC 中的 C 功能相同,是核心,负责接收请求、获取数据、返回结果
T:Template,模板,和 MVC 中的V 功能相同,产生 Html 页面
3、Q:Django 创建项目后,项目文件夹下有哪些东西?
A:a、manage.py  与项目进行交互的命令行工具集的接口  项目管理器  执行python manage.py来查看所有命令  
b、与项目同名的目录,项目的一个容器 ,包含项目的配置文件,目录名称不建议修改
c、urls.py:url配置文件,Django项目中所有地址(页面)都需要我们自己去配置URL  
d、settings.py:项目的总配置文件,里面包含了数据库、web应用、时间等各种配置  
e、init.py:python中声明模块的文件,内容默认为空
f、wsgi.py :python 服务器网关接口,python应用与web服务器之间的接口 ,在项目开发中一般不做修改  
4、Q:Django 中间件是如何使用的?
A:在http请求 到达视图函数之前   和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
中间件的执行流程
1、执行完所有的request方法到达视图函数。
2、执行中间件的其他方法
2、经过所有response方法返回客户端
中间件可以定义五个方法,分别是:(主要的是 process_request和process_response)
process_request(self,request)
process_view(self, request, view_func,view_args, view_kwargs)
process_template_response(self,request,response)
process_exception(self, request, exception)
process_response(self, request, response)
5、Q:什么 csrf 攻击原理?如何解决?
A:CSRF攻击原理:
a、用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
b、在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
c、用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
d、网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
e、浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行,发邮件,发消息,修改你的密码,购物,转账,偷窥你的个人信息,导致私人信息泄 漏和账户财产安全收到威胁 。
防御:
a、验证 HTTP Referer 字段
b、在请求地址中加入token验证
c、在HTTP 头中自定义属性并验证
6、Q:接口安全设计你是怎么设计的?
A:我主要是通过签名sign、Token、时间戳配合使用进行验证的,主要流程是:
1、客户端通过用户名密码登录服务器并获取Token
2、客户端生成时间戳timestamp,并将timestamp作为其中一个参数
3、客户端将所有的参数,包括Token和timestamp按照自己的算法进行排序加密得到签名sign
4、将token、timestamp和sign作为请求时必须携带的参数加在每个请求的URL后边(http://url/request?token=123×tamp=123&sign=123123123)
5、服务端写一个过滤器对token、timestamp和sign进行验证,只有三个参数都正确且在规定时间内,本次请求才有效
7、Q:熟悉Linux吗?有没有做过项目部署?
A:我在工作中经常会用到Linux,使用起来没问题,做过项目部署,使用nginx + uwsgi 的方式来部署 Django 项目。
8、Q:MySQL的索引类型有哪些,怎么优化查询效率?
A:索引类型有:普通索引、唯一索引、主键索引、组合索引、全文索引
查询优化:
1、对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引
2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
3、应尽量避免在 where 子句中使用!= 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描
4、应尽量避免在 where 子句中使用or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描
5、对于多张大数据量的表 JOIN,要先分页再 JOIN,否则逻辑读会很高,性能很差
6、分表分库 、主从读写分离
9、Q:爬虫爬取下来的数据如何去重,说一下具体的算法依据
A:1.通过 MD5 生成电子指纹来判断页面是否改变
2.nutch 去重。nutch 中 digest 是对采集的每一个网页内 容的 32 位哈希值,如果两个网页内容完全一样,它们的 digest 值肯定会一样。
10 Q:爬虫过程中遇到验证码怎么处理?
A:1.Scrapy 自带处理验证码
2.获取到验证码图片的url,调用第三方付费接口破解验证码

面试总结:这次面试问的比较多的是关于web方面的知识,以及一些爬虫、数据库相关知识,公司很有发展力,保持有礼貌,认真按照自己的理解回答问题。

148 个回复

倒序浏览
感谢分享
回复 使用道具 举报
顶!!!!!!!!!!
回复 使用道具 举报
感谢分享!!!!!!!!!!!
回复 使用道具 举报
6666666666666666666666
回复 使用道具 举报
感谢分享!!!!!!!!!!!
回复 使用道具 举报
回复 使用道具 举报
致橡树 来自手机 中级黑马 2018-8-28 17:23:10
8#
66666688888888
回复 使用道具 举报
6666,赞赞赞
回复 使用道具 举报
666666666666666666
回复 使用道具 举报
66666666666666666666666
回复 使用道具 举报
黑马666666666666666666666666666666666666
回复 使用道具 举报
举个栗子 来自手机 中级黑马 2018-8-28 18:23:05
13#
6666666棒棒哒
回复 使用道具 举报
duanshaobo 来自手机 中级黑马 2018-8-28 18:24:31
14#
人到中年不得已,保温杯里泡枸杞
回复 使用道具 举报

感谢分享!!!!!!!!
回复 使用道具 举报
感谢分享!!!!!!!!
回复 使用道具 举报
1098018910 来自手机 中级黑马 2018-8-28 18:44:43
17#
感谢分享!!!!!!!!
回复 使用道具 举报
yujq 中级黑马 2018-8-28 19:23:40
18#
回复 使用道具 举报
666666666
回复 使用道具 举报
666666666666666的飞起
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马