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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 逆风TO 于 2019-5-23 14:25 编辑

公司名称:西安图迹信息科技有限公司
公司地址:锦业路69号创业研发园瞪羚谷A座9层
主营概况:2013年成立,大数据应用工程中心,为五大发电集团在内的数十家大型发电企业提供信息化服务,去的时候办公室大概十几个人,网上查到的信息是50-100人
公司网址:http://www.dt-future.com/

公司照片:

HR问到的一些问题都是我们面试经常会问到的一些问题,会问到上家公司的一些情况还有离职原因,希望大家一定要做些准备再去面试!我把和技术面试的一些题目整理了一下,方便大家参考。
1. 简述你对input()函数的理解?
在Python3中,input()获取用户输入,不论用户输入的是什么,获取到的都是字符串类型的。在Python2中有 raw_input()和input(), raw_input()和Python3中的input()作用是一样的, input()输入的是什么数据类型的,获取到的就是什么数据类型的。

2. Python中有日志吗?怎么使用?
Python自带logging模块,调用 logging.basicConfig()方法,配置需要的日志等级和相应的参数, Python 解释器会按照配置的参数生成相应的日志。
INFO
DEBUG
WARNING
ERROR
CRITICAL

3.Python中的作用域?
Python中,一个变量的作用域总是由在代码中被赋值的地方所决定。当Python遇到一个变量的话 它会按照这的顺序进行搜索: 本地作用域(Local)--->当前作用域被嵌入的本地作用域(Enclosing locals)--->全局/模块作用域(Global)--->内置作用域(Built-in)

4. Python 中三大框架各自的应用场景?
①. Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVT的框架模式,即模型M,模板T和视图V。主要是用来搞快速开发的,他的亮点就是快速开发,节约成本
②. Flask
轻量级,主要是用来写接口的一个框架,实现前后端分离,提升开发效率,Flask 本身相当于一 个内核,其他几乎所有的功能都要用到扩展(邮件扩展 Flask-Mail,用户认证 Flask-Login),都需要 用第三方的扩展来实现。比如可以用 Flask-extension 加入 ORM、窗体验证工具,文件上传、身份验 证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
③. Tornado
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。
5.什么是 restful api,谈谈你的理解?
REST:Representational State Transfer 的缩写,翻译:“具象状态传输”。一般解释为“表现层 状态转换”。REST 是设计风格而不是标准。是指客户端和服务器的交互形式。我们需要关注的重点是如何设计 REST 风格的网络接口。
REST 的特点:
①. 具象的。一般指表现层,要表现的对象就是资源。比如,客户端访问服务器,获取的数据就是资 源。比如文字、图片、音视频等。
②. 表现:资源的表现形式。txt 格式、html 格式、json 格式、jpg 格式等。浏览器通过 URL 确定资 源的位置,但是需要在 HTTP 请求头中,用 Accept 和 Content-Type 字段指定,这两个字段是对资源 表现的描述。
③. 状态转换:客户端和服务器交互的过程。在这个过程中,一定会有数据和状态的转化,这种转化 叫做状态转换。其中,GET 表示获取资源,POST 表示新建资源,PUT 表示更新资源,DELETE 表示删 除资源。HTTP 协议中最常用的就是这四种操作方式。
RESTful 架构:
①. 每个 URL 代表一种资源;
②. 客户端和服务器之间,传递这种资源的某种表现层;
③. 客户端通过四个 http 动词,对服务器资源进行操作,实现表现层状态转换。
5.有用过 Django REST framework 吗?
Django REST framework 是一个强大而灵活的 Web API 工具。使用 RESTframework 的理由 有:Web browsable API 对开发者有极大的好处包括 OAuth1a 和 OAuth2 的认证策略支持 ORM 和非 ORM 数据资源的序列全程自定义开发——如果不想使用更加强大的功能,可仅仅使用常规的 function-based views 额外的文档和强大的社区支持。
6.查询集两大特性?惰性执行?
①. 惰性执行
创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
②. 缓存
使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。
7.HttpRequest 和 HttpResponse 是什么?干嘛用的?
HttpRequest 是 django 接受用户发送多来的请求报文后,将报文封装到 HttpRequest 对象中去。
HttpResponse 返回的是一个应答的数据报文。render 内部已经封装好了 HttpResponse 类。

8.你所知道的分布式爬虫方案有哪些?
三种分布式爬虫策略:
①. Slaver 端从 Master 端拿任务(Request/url/ID)进行数据抓取,在抓取数据的同时也生成新任务,并将任务抛给 Master。Master 端只有一个 Redis 数据库,负责对 Slaver 提交的任务进行去重、加入待爬队列。
优点: scrapy-redis 默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作 scrapyredis 都已经帮我们做好了,我们只需要继承 RedisSpider、指定 redis_key 就行了。
缺点: scrapy-redis 调度的任务是 Request 对象,里面信息量比较大(不仅包含 url,还有 callback 函数、headers 等信息),导致的结果就是会降低爬虫速度、而且会占用Redis 大量的存储空间。当然我们可以重写方法实现调度 url 或者用户 ID。
②. Master 端跑一个程序去生成任务(Request/url/ID)。Master 端负责的是生产任务,并把任务去重、加入到待爬队列。Slaver 只管从 Master 端拿任务去爬。
优点: 将生成任务和抓取数据分开,分工明确,减少了 Master 和 Slaver 之间的数据交流;Master 端生成任务还有一个好处就是:可以很方便地重写判重策略(当数据量大时优化判重的性能和速度还是很重要的)。
缺点: 像 QQ 或者新浪微博这种网站,发送一个请求,返回的内容里面可能包含几十个待爬的用户 ID,即几十个新爬虫任务。但有些网站一个请求只能得到一两个新任务,并且返回的内容里也包含爬虫要抓取的目标信息,如果将生成任务和抓取任务分开反而会降低爬虫抓取效率。毕竟带宽也是爬虫的一个瓶颈问题,我们要秉着发送尽量少的请求为原则,同时也是为了减轻网站服务器的压力,要做一只有道德的 Crawler。所以,视情况而定。
③. Master 中只有一个集合,它只有查询的作用。Slaver 在遇到新任务时询问 Master 此任务是否已爬,如果未爬则加入 Slaver 自己的待爬队列中,Master 把此任务记为已爬。它和策略一比较像,但明显比策略一简单。策略一的简单是因为有 scrapy-redis 实现了scheduler 中间件,它并不适用于非 scrapy 框架的爬虫。
优点: 实现简单,非 scrapy 框架的爬虫也适用。Master 端压力比较小,Master 与Slaver 的数据交流也不大。
缺点:“健壮性”不够,需要另外定时保存待爬队列以实现“断点续爬”功能。各 Slaver的待爬任务不通用。如果把 Slaver 比作工人,把 Master 比作工头。策略一就是工人遇到新任务都上报给工头,需要 干活的时候就去工头那里领任务;策略二就是工头去找新任务,工人只管从工头那里领任务干活;策略 三就是工人遇到新任务时询问工头此任务是否有人做了,没有的话工人就将此任务加到自己的“行程 表”。9.你用过的爬虫框架或者模块有哪些?谈谈他们的区别或者优缺点?
requests request是一个HTTP 库, 它只是用来,进行请求,对于HTTP 请求,他是一个强大的库,下载,解析全部自己处理,灵活性更高,高并发与分布式部署也非常灵活,对于功能可以更好实现Scrapy scrapy 是封装起来的框架,他包含了下载器,解析器,日志及异常处理,基于多线程,twisted的方式处理,对于固定单个网站的爬取开发,有优势,但是对于多网站爬取 100个网站,并发及分布式 处理方面,不够灵活,不便调整与括展。



117 个回复

倒序浏览
厉害厉害
回复 使用道具 举报

厉害厉害
回复 使用道具 举报
回复 使用道具 举报
赞赞赞
赞赞赞
赞赞赞
回复 使用道具 举报
                                                                     
回复 使用道具 举报
       
回复 使用道具 举报
66666666666666666666666666
回复 使用道具 举报
66666666666666666666666
回复 使用道具 举报
666666666666666666666666666666666666
回复 使用道具 举报
学习到很多
回复 使用道具 举报
作者棒棒哒
回复 使用道具 举报
py@py 中级黑马 2019-5-27 14:45:21
13#
感谢分享
回复 使用道具 举报
66666666666666666666666666
回复 使用道具 举报
duanshaobo 来自手机 中级黑马 2019-5-27 14:59:46
15#

西安黑马JavaEE就业34期
平均薪资7420元,毕业18个工作日,就业率49.21%
回复 使用道具 举报
感谢分享
回复 使用道具 举报
作用作用作用作用
回复 使用道具 举报
赞赞赞,6666
回复 使用道具 举报

赞赞赞
赞赞赞
赞赞赞
回复 使用道具 举报
致橡树 来自手机 中级黑马 2019-5-27 15:55:48
20#
6666666666666666666666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马