Java 杂谈程序员之言

高薪直通车丨 Python面试经验分享(**斯通实业)

2018-08-31  本文已影响4人  java面试笔试

笔试题:

没有笔试题,如果有题咱也不要怕,告诉你们一个经验,把笔试题拍个照片发到咱们的班级群里,依靠大家的力量,我相信你可以做完的

面试环节:

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

上一篇下一篇

猜你喜欢

热点阅读