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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小伙啊 中级黑马   /  2018-8-23 14:36  /  9596 人查看  /  142 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小伙啊 于 2018-8-23 14:44 编辑

公司名称:北京仁科互动网络技术有限公司
公司地址:西安雁塔区中晶科技广场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方面的知识,以及一些爬虫、数据库相关知识,公司很有发展力,保持有礼貌,认真按照自己的理解回答问题。

142 个回复

倒序浏览
感谢分享哦
回复 使用道具 举报
回复 使用道具 举报
1111111111111111111111111111111111111111111111111111111
回复 使用道具 举报
顶!!!!!!!!!!!!
回复 使用道具 举报
感谢分享....................
回复 使用道具 举报

感谢分享....................
回复 使用道具 举报
666666666666666666666666
回复 使用道具 举报
感谢分享....................
回复 使用道具 举报
回复 使用道具 举报
九年义务教育,你为何如此优秀
回复 使用道具 举报
传智我龙哥,人狠话不多
回复 使用道具 举报
感谢分享
回复 使用道具 举报
666666666666666666
回复 使用道具 举报
淡写薰衣草的香 来自手机 中级黑马 2018-9-12 12:07:22
15#
回复 使用道具 举报
感谢分享   棒棒哒
回复 使用道具 举报
很不错的分享,谢谢啦!
回复 使用道具 举报
小丹子 来自手机 中级黑马 2018-9-12 12:24:05
18#
666666666666666
回复 使用道具 举报
回复 使用道具 举报
感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马