公司名称:陕西安培斯通实业有限公司 公司地址:西安雁塔区绿地同盟B1208 公司规模:20-99人 公司环境:
笔试题: 没有笔试题,如果有题咱也不要怕,告诉你们一个经验,把笔试题拍个照片发到咱们的班级群里,依靠大家的力量,我相信你可以做完的 面试环节: 1、 简单说下你对input() 函数的理解? 答:在Python3中,input() 函数用来获取用户的输入信息,无论用户输入什么,都获取到字符串类型的信息;在 Python2 中有 raw_input()和 input(), raw_input()和 Python3 中的 input()作用是一样的, input()输入的是什么数据类型的,获取到的就是什么数据类型的。 2、 说几个Python常用的标准库(模块)? 答:os 操作系统,time 时间,random 随机,pymysql连接数据库,threading 线程,multiprocessing 进程,queue 队列。 第三方库: django 和 flask 也是第三方库,requests,scrapy,xadmin,celery, re,hashlib,md5。 3、 说说一般爬虫的流程? 1、爬虫引擎获得初始请求开始抓取。 2、爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。 3、爬虫调度器返回下一个请求给爬虫引擎。 4、引擎请求发送到下载器,通过下载中间件下载网络数据。 5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎。 6、引擎将下载器的响应通过中间件返回给爬虫进行处理。 7、爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。 8、引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。 9、重复以上步骤,直到爬取完所有的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 前端性能优化,应用服务器性能优化,存储服务器优化。 对前端的优化主要有: 1.减少 http 请求,减少数据库的访问量,比如使用雪碧图。 2.使用浏览器缓存,将一些常用的 css,js,logo 图标,这些静态资源缓存到本地浏览器,通过设 置 http 头中的 cache-control 和 expires 的属性,可设定浏览器缓存,缓存时间可以自定义。 对我个人而言,我做的优化主要是以下几个方面: 1.合理的使用缓存技术,对一些常用到的动态数据,比如首页做一个缓存,或者某些常用的数据做个缓存,设置一定得过期时间,这样减少了对数据库的压力,提升网站性能。 2.使用celery 消息队列,将耗时的操作扔到队列里,让 worker 去监听队列里的任务,实现异步操作,比如发邮件,发短信。 3.就是代码上的一些优化,补充:nginx 部署项目也是项目优化,可以配置合适的配置参数,提升效率,增加并发量。 4、如果太多考虑安全因素,服务器磁盘用固态硬盘读写,远远大于机械硬盘。 5、另外还可以搭建服务器集群,将并发访问请求,分散到多台服务器上处理。 6.最后就是运维工作人员的一些性能优化技术了。 7、有过部署经验?用的什么技术?可以满足多少压力? 答:有部署经验,在阿里云服务器上部署的 技术有:nginx + uwsgi 的方式来部署 Django 项目,压力测试一两千。
面试总结: 回顾这次面试,问的问题方面比较广,对缓存、爬虫、高并发方面问的比较多,但是我们要保持一个态度,知道的问题一定要回答的全面,展现出自己的自信,不太会的可以按照自己的理解进行阐述,保持沉着冷静不紧张且有礼貌即可。
|