美文网首页Java 杂谈程序员之言
高薪直通车丨 Python面试经验分享(**斯通实业)

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

作者: java面试笔试 | 来源:发表于2018-08-31 17:07 被阅读4次

    笔试题:

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

    面试环节:

    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

    相关文章

      网友评论

        本文标题:高薪直通车丨 Python面试经验分享(**斯通实业)

        本文链接:https://www.haomeiwen.com/subject/xmhewftx.html