1.小明在用python实现文件上传功能时,做了如下操作,其中做法不恰当的是( )
A. 通过黑名单验证上传的文件后缀名称
B. 设置上传目录不可解析
C. 重命名上传的文件名称
D. 使用单独的服务器存放上传的文件
相关知识点: 黑名单是危险易绕过的,可以使用文件后缀名白名单验证和随机文件名称的方式
2.在构建的Flask应用程序,使用SQLAlchemy中为解决 app上下文的问题:RuntimeError: working outside of request context时的解决方式不正确的是( )
A. db.init_app(app) db.create_all(app=app)
B. db.init_app(app) with app.app_context(): db.create_all()
C. db = SQLAlchemy(app=app)
D. with app.app_context(): db.create_all(app=app)
相关知识点: SQLAlchemy模块不需要立即使用应用的初始化,在app上下文的处理时, 为解决working outside of request context问题,不能用D. with app.app_context(): db.create_all(app=app)的写法。
3.下列Pandas代码中运行最快的是( ) g = df.groupby('key').value def normalize(x): return (x - x.mean()) / x.std() normalized = (df['value'] - g.transform('mean')) / g.transform('std') (1)normalized (2)g.apply(normalize) (3)g.transform(normalize)
A. (1)
B. (2)
C. (3)
D. 没有区别
相关知识点: 内置的聚合函数,比如mean或sum,通常比apply函数快,也比transform快。
4.以下操作中在寻找爬虫核心链接中是不必要的是( )
A. 浏览器的开发者模式
B. 寻找到network/网络状态监控页面
C. 查看每个url对应的request请求和响应以及参数
D. 另存网页为本地文件
相关知识点: 不需要存到本地
5.Numpy中能够在[a,b)范围内取一个随机数的表达式是( )
A. b * numpy.random.random() + a
B. b * numpy.random.random() + a + 1
C. (b - a) * numpy.random.random() + a
D. (b - a - 1) * numpy.random.random() + a + 1
相关知识点: 随机生成函数np.random.uniform(low, high, size):可以从一个均匀分布[low,high)中随机采样,定义域是左闭右开。
6.web开发中,以下做法正确的是( )
A. 后端手机验证码验证通过后,跳转到设置新密码页面,https+post提交用户名、新密码,设置新密码完成密码重置功能
B. 点击重置密码按钮,系统发送一条重置密码的链接到邮箱,格式为:http://www.xxx.com/password/reset?key=1563785498&username=045g6hgd4771h909uiwq5k001923r2p6(其中key是unix时间戳,username是用户名的md5值)
C. 某网站的cookie生成方法为:固定字符串+用户名+时间戳的base64编码
D. 以上都不对
相关知识点: A选项,验证码校验和重置密码是不能分开两步提交的,容易绕过;B的问题主要是无法避免数据篡改,需要增加签名sign=f(param + secret)防止数据被篡改;其次md5加密的用户名并不知道是哪个用户,另外敏感数据应该用https;C项base64可逆,解密之后破解规则,可以伪造登录状,无法避免数据篡改
7.在提供更多接口给用户使用的时候,有时需要做页面的跳转, 除了自己开发的页面外,还有其他第三方的跳转链接,但可以返回原页面,下列Flask语句可以解决其需要的操作是( )
A. return redirect(url_for('hello'))
B. return Resonse(url_for('hello'))
C. return send_template(url_for('hello'))
D. return redirect ('hello')
相关知识点: 重定向到某一web页面并且可返回,首选redirect的用法,url_for方法简单来说,这个函数接受视图函数的名字(字符串形式)作为参数,返回视图函数对应的url。
8.以下哪个Scrapy不能实现?
A. 同时在不同的url上爬行
B. 支持shell方式,方便独立调试
C. 通过管道的方式存入数据库
D. 支持分布式
相关知识点: scrapy基于python的爬虫框架,扩展性比较差,不支持分布式
9.Flask程序报错TemplateNotFound: bootstrap/wtf.html 最可能的原因是()
A. 模板文件夹中wtf.html文件不存在
B. 未进行路由映射
C. ORM扩展未正确安装
D. manage.py文件没有进行实例化 bootstrap = Bootstrap(app)
相关知识点: 因为在manage.py中没有 bootstrap = Bootstrap(app)
10.判断值在0-10之间的代码,正确的是
A. if num >= 0 and num <= 10:
B. if num >= 0 or num <= 10:
C. if num >= 0 && num <= 10:
D. if num >= 0 || num <= 10:
相关知识点: and表示并且
11.下列关于Pandas中的apply方法说法正确的是()
A. apply 方法是对DataFrame每一个元素应用某个函数的
B. apply 方法能够实现所有aggregate 方法的功能
C. apply方法和map方法都能够进行聚合操作
D. apply 方法只能够对行列进行操作
相关知识点: apply 方法只能够对行列进行操作,若对每一行进行apply,则axis=1。编写好apply应用的函数,注意传进的参数和返回值的类型是单值、Series或DataFrame
12.以下关于爬虫中代理服务器,说法正确的是( )
A. 会将数据包原封不动地转发, 在服务端看来就好像真的是一个普通客户端在访问, 而记录的IP 是代理服务器的IPO,这种属于透明代理。
B. 能突破自身IP 访问限制, 访问一些平时不能访问 的站点。
C. 对于爬虫来说,用代理可以隐藏自身IP , 防止自身 被封锁。
D. 通常代理服务器都设置一个较大的硬盘缓冲区,可提高访问速度
相关知识点: A选项属于高度匿名代理
13.阅读下面Flask代码,以商品(good.py)的模块代码为例, 可能会抛出异常的地方是 ( ) 1. # from flask import Blueprint 2. 3. good_blueprint = Blueprint( 'good', __name__, url_prefix='/api/good' ) 4. 5. @good_blueprint.route('/') 6. def getGoods(): 7. pass 8. 9. @good_blueprint.route('/') 10. def getGoodsInCatagory(): 11. pass
A. 第3行
B. 第5行
C. 第9行
D. 第10行
相关知识点: 本题考查代码的规范和参数使用在实际项目的易错处, D第10行中的方法中的参数不应该用“<>”, 默认不写或者以元组的形式传入。
14.myisam与innodb是mysql的存储引擎,下列关于两者的区别说法错误的是( )
A. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务
B. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败
C. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高.但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据.因此,主键不应该过大;而MyISAM是聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的
D. Innodb支持全文索引,而MyISAM不支持全文索引,查询效率上Innodb要高
相关知识点: myisam与innodb是mysql的存储引擎 区别 1.InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2.InnoDB支持外键,而MyISAM不支持.对一个包含外键的InnoDB表转为MYISAM会失败; 3.InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高.但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数
15.以下创建字典的语句正确的是
A. {}
B. dict([1,2],[3,4])
C. dict(([1,2],[3,4]))
D. {1:2}
相关知识点: 字典结构为key:value
16.当我们爬取了网页的html文本后需要对原文本进行解析,解析的方法通常有( )
A. 普通文本操作
B. 正则表达式:re
C. Dom树操作:BeautifulSoup
D. XPath选择器:lxml
相关知识点: 爬虫一般只是爬取了网页的html文本,对于爬虫,我们需要明确我们需要爬取的结构化数据,需要对原文本进行解析,解析的方法通常有下面这些 普通文本操作 正则表达式:re Dom树操作:BeautifulSoup XPath选择器:lxml scrapy默认支持选择器的功能,自带的选择器构建与lxml之上,并对其进行了改进,使用起来更为简洁明了
17.多线程程序中引用互斥锁可以解决哪些问题?
A. 确定了某段代码只能由一个线程从头到尾完整 地执行。
B. 死锁
C. 阻止了多线程的并发执行
D. 全局变量的安全
相关知识点: BC选项根本无法解决,因为就是引用互斥锁才产生的
18.下面选项中不能在服务器的响应头中查看到的是( )
A. Content-Length
B. cookie
C. Content-Type
D. User-Agent
相关知识点: BD选项是在请求头中才能看到
19.网络爬虫技术可以应用在以下哪些方面?( )
A. 搜索引擎
B. 自动过滤广告
C. 数据分析
D. SEO优化
相关知识点: 网络爬虫技术可以应用在搜索引擎、自动过滤广告、数据分析、SEO优化等方面。网络爬虫技术的功能十分强大,但在使用时也应遵守相应的规则。
20.对于Scrapy中的XPath选择器,下列说法正确的是( )
A. 通过extract方法可以取出节点的值
B. 通过text()可以取出节点的内容
C. 通过@href可以取出href属性的值
D. 直接对节点取值,则是输出节点的字符串
相关知识点: Selector相当于节点,通过xpath去到子节点集合(SelectorList),可以继续搜索,通过extract方法可以取出节点的值,extract方法也可以作用于SelectorList,对于SelectorList可以通过extract_first取出第一个节点的值 通过text()取出节点的内容 通过@href去除节点属性值(这里是取出href属性的值) 直接对节点取值,则是输出节点的字符串