笔试题:
没有笔试题,如果有题咱也不要怕,告诉你们一个经验,把笔试题拍个照片发到咱们的班级群里,依靠大家的力量,我相信你可以做完的
面试环节:
1、 简单说下你对input() 函数的理解?
答:在Python3中,input() 函数用来获取用户的输入信息,无论用户输入什么,都获取到字符串类型的信息;在 Python2 中有 raw_input()和 input(), raw_input()和 Python3 中的 input()作用是一样的, input()输入的是什么数据类型的,获取到的就是什么数据类型的。
2、 说几个Python常用的标准库(模块)?
答:ios 操作系统,time 时间,random 随机,pymysql连接数据库,threading 线程,multiprocessing 进程,queue 队列。
第三方库: django 和 flask 也是第三方库,requests,scrapy,xadmin,celery, re,hashlib,md5。
3、 说说一般爬虫的流程?
①爬虫引擎获得初始请求开始抓取。
②爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。
③爬虫调度器返回下一个请求给爬虫引擎。
④引擎请求发送到下载器,通过下载中间件下载网络数据。
⑤一旦下载器完成页面下载,将下载结果返回给爬虫引擎。
⑥引擎将下载器的响应通过中间件返回给爬虫进行处理。
⑦爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。
⑧引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。
⑨重复以上步骤,直到爬取完所有的url请求。
4、你知道深拷贝和浅拷贝的区别吗?
答:浅拷贝概念:浅拷贝copy只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。
浅拷贝特点:
公用一个值;
这两个变量的内存地址一样;
对其中一个变量的值改变,另外一个变量的值也会改变;
深拷贝概念:
deepcopy一个变量对另外一个变量的值拷贝。
深拷贝特点:
两个变量的内存地址不同;
两个变量各有自己的值,且互不影响;
对其任意一个变量的值的改变不会影响另外一个;
5、 对 MVC,MVT 模式的理解?
答: MVC简介:
M:Model,模型,和数据库进行交互
V:View,视图,负责产生 Html 页面
C:Controller,控制器,接收请求,进行处理,与 M 和 V 进行交互,返回应答。
MVT简介:
M:Model,模型,和 MVC 中的 M 功能相同,和数据库进行交互。
V:view,视图,和 MVC 中的 C 功能相同,是核心,负责接收请求、获取数据、返回结果
T:Template,模板,和 MVC 中的 V 功能相同,产生 Html 页面
6、 django 如何提升性能(高并发)?
答:对一个后端开发程序员来说,提升性能指标主要有两个一个是并发数,另一个是响应时间网站性能的优化一般包括 web 前端性能优化,应用服务器性能优化,存储服务器优化。
对前端的优化主要有:
①减少 http 请求,减少数据库的访问量,比如使用雪碧图。
②使用浏览器缓存,将一些常用的 css,js,logo 图标,这些静态资源缓存到本地浏览器,通过设 置 http 头中的 cache-control 和 expires 的属性,可设定浏览器缓存,缓存时间可以自定义。
对我个人而言,我做的优化主要是以下几个方面:
①合理的使用缓存技术,对一些常用到的动态数据,比如首页做一个缓存,或者某些常用的数据做个缓存,设置一定得过期时间,这样减少了对数据库的压力,提升网站性能。
②使用celery 消息队列,将耗时的操作扔到队列里,让 worker 去监听队列里的任务,实现异步操作,比如发邮件,发短信。
③就是代码上的一些优化,补充:nginx 部署项目也是项目优化,可以配置合适的配置参数,提升效率,增加并发量。
④如果太多考虑安全因素,服务器磁盘用固态硬盘读写,远远大于机械硬盘。
⑤另外还可以搭建服务器集群,将并发访问请求,分散到多台服务器上处理。
⑥最后就是运维工作人员的一些性能优化技术了。
⑦有过部署经验?用的什么技术?可以满足多少压力?
答:有部署经验,在阿里云服务器上部署的 技术有:nginx + uwsgi 的方式来部署 Django 项目,压力测试一两千。
公众号:javafirst
网友评论