python试题1.2

这是一份涵盖Python基础知识、爬虫及后台开发的综合试题,包括填空题、名词解释等,涉及面向对象、数据结构、数据库操作、网络请求、爬虫技术和ORM等内容,适合检验和提升Python技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、填空题

1. list=[x for x in range(5, 2, -1)],则打印list的结果是:[5, 4, 3]

2. python中的编码格式你用过哪些? utf-8, ascii, gbk

3. 面向对象的特点是:封装、继承、多态

4. 现有字符串为 info = " abcdefghijk ", 则: info[::-1] 的结果是  kjihgfedcba

5. OOP是什么意思?面向对象

6.声明函数的关键字是: def ,声明类的关键字是: class

7. 循环中的continue 是什么意思? 跳出本次循环,执行下一次循环

8. 请说明self是什么意思? 

Self 一般是在声明类的方法时,出现在函数的参数中,表示此函数是一个对象函数。所以self表示此类的一个对象。

9. 数据库大致分为两大类:关系型数据库(Mysql, sqlite, SQLServer) 、非关系型数据库(Redis, Hbase, MongoDB )

10. 常用的请求方法有: head   put  delete  option  get post

11. 翻译以下单词的意思:

DNS:  域名解析系统      HTTP:  超文本传输协议       DataBas:  数据库           response:请求、响应

property: 属性               Filter:  过滤器                       internet:   网络                Port:  端口

12. 请求报文是由 请求行,请求头, 空行,请求数据 等四个部分组成。

13. 除了User-Agent,你还知道Cookie, Accept,Accept-Language,Host等字段。 

14. 正则中的/d表示 数字[0-9], *表示 0次或0次以上,?表示 一次或一次以上

15. 什么叫耦合度? 文件的关联性

爬虫部分:

解析网页数据的方式:xpath,bs4,css,re。解析json数据的方式:json,eval,demjson

如果要使用多线程,需要导入 threading 模块,解析网页数据,需要导入 lxml/etree/beautifulsoup/re 模块。

使用过的pipelines有 数据库异步写入,数据库同步写入,图片下载,文件下载。middlewares有 随机User-Agent,重定向,代理ip。

4. 发爬虫措施有?设置robot.txt。根据ip限定访问次数。设置验证码。校验请求报文(User-Agent/Cookie)。在头部添加自定义字段。

5. 简述如何抓取手机app数据? 使用fiddler抓取手机app接口

6. 爬虫何如防止数据重复爬取? 使用布隆过滤(Redis配合bloomfilter)。数据存储之前先查询数据是否存在。设置Scrapy的don't-filter为False。

7. 如何爬取动态网页的数据?Scrapy-splash。使用selenium模拟浏览器操作。抓取json数据的接口。

8. 什么是GIL? 全局解释性锁,用来保证同一时刻只有一个线程在工作,所以python没有真正意义上的多线程

9. 每天定时开启爬虫任务怎么实现?例如一天爬一次?   While 配合 time.sleep。Celery的定时任务。Linux的命令Crontab。Scheduler。windows系统自带的任务计划程序。

 

 

1. 什么是Python?使用Python有什么好处?Python都有哪些自带的数据结构?

Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理。

它简洁、方便、容易扩展,有许多自带的数据结构,而且它开源。

Python自带的数据结构分为可变的和不可变的可变的有:数组、集合、字典;不可变的:字符串、元组、数。

2. 什么是PEP8?

PEP8是一个编程规范

3. 数组和元组之间的区别是什么?

数组内容是可以被修改的,元组内容是只读的。另外,元组可以被哈希,比如作为字典的关键字

4. 什么是lambda函数,有什么好处?Python中的lambda是什么?为什么lambda没有语句?

匿名函数,对于只用一次的函数,不需要单独定义。

这是一个常被用于代码中的单个表达式的匿名函数

lambda没有语句的原因是:它被用于在代码被执行的时候构建新的函数对象并且返回

——Python中的pass是什么?

Pass是一个在Python中不会执行的语句。在复杂语句中,如果一个地方需要暂时被留白,它常常被用于占位符

——Python    函数中有哪几种参数?顺序要求

除必选参数,默认参数外,还有几种特殊的参数类型:可变参数,关键字参数,命名关键字参数。

它们的存在,使得函数的参数更加自由。

顺序:必选参数,默认参数外、可变参数,命名关键字参数和关键字参数。

5.  单引号,双引号,三引号的区别?
单引号,双引号混用,不用转义字符
三引号多行书写,原样输出

8. 用过python内置或者外置的模块有哪些?
内置:
os, sys, time, datetime, shutil, hashlib, json, zip, getpass, re, random, configparser, traceback, yaml, itertools, logging, turtle
外置:
jieba,  pyqt, matplotlib, Numpy, pandas

——在Python在模块和包是什么?

模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块,比如对象和属性。

一个包 含许多Python代码的文件夹是一个包。一个包可以包含模块和子文件夹

9. python的search和match知识点?

search和match都在re模块中,match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None。

search匹配整个字符串,直到找到一个匹配。

10. 字典和列表的区别有哪些?                     

  1. _有序和无序
  2. _列表通过索引进行元素操作。字典通过Key进行元素操作
  3. _列表索引自动生成。字典Key自定义,字典中的key必须唯一不可变

11. python中如何做异常捕获?有几种写法?列出你遇到的至少3种错误类型?

(    介绍一下except的用法和作用?
try...except...else...finally 异常处理,捕获出错异常

indexError  索引错误         KeyError  Key错误      ValueError  值错误      TypeError 类型错误      AttrError  属性错误.....

Try:

       要检测的代码

Except   Exception  as e:

       代码出现异常执行

Else:

       代码没有抛出异常错误

Finally:

       无论代码是否出现,都会执行

12. map()、filter()、reduce()函数的作用?

map(lambda  x:x*x, [1,2,3,4,5,6,7,8,9]) 让可迭代对象中的每一个元素都执行一次某个函数。并将执行函数返回的结果放入新的列表

Filter() 让可迭代对象中的每一个元素都执行一次某个函数,并将函数返回为真(不是None、空字符串、0、False)的数据放入新的迭代器对象中。

Reduce() 让可迭代对象中的每两个个元素都执行一次某个函数,并将执行结果和下一个元素进行再次运算,直至没有元素为止。返回的是一个结果

13. 简述你使用过的Python中的装饰器,并说明它们的作用

@classmethod 类函数装饰器,装饰的函数可以由类和对象调用,默认参数cls表示类

@staticmethod 静态函数装饰器,装饰的函数可以由类和对象调用,没有默认参数

@property 描述装饰器  装饰的函数可以通过对象.函数(不加括号) 直接调用

@eat.setter 对象.eat = 值  会调用该函数

14. 数据库(MySQL)语句:

(1) .创建一张学生表,包含姓名,年龄,学号(主键),班级编号,性别,成绩等字段。类型自定义。

Create table if not exists student(id integer primary key, name text, age integer.....)

(2) . 向表中插入1条数据,张三,20,10086,101,男,95

insert inot student(id, name, ....) values (10086, ‘张三’....)

(3).  删除所有姓名以张开头的学生信息

Delete from student where name like '张%'

(4).  查询所有姓氏以张开头,名字部分有两个字的学生信息,例如:张起灵、张日山、、

Select * From  student where name like '张__'

(5). 查询stu表和score表所有学生信息的sql语句

select * from stu left join score on stu.id=score.id

6. 使用过的数据库的索引有:全局索引,唯一索引

7. 如何提升数据库的查询速度? 使用Redis充当缓存数据。使用索引。优化表的存储结构(分表=水平分表+垂直分表)。选择合适的数据存储引擎,默认InnoDB,改成MylSAM。选择合适的数据库  例如 mysql?postgresql。更改数据库的配置。更换服务器配件。优化sql语句(不使用like,不使用*,不使用子查询 使用连接查询....)

8. 简述数据库的索引?  使用索引可以提升查询速度

 

14. 各列举五个常见的响应状态码请求头,及其所表示的含义?

403  无权限访问               402  服务器读不懂你的请求

200  请求成功                   301   重定向

500   服务器端出现了不可预计的错误,暂时无法提供服务

503   服务器繁忙,暂时无法提供服务

 

User-Agent

Host

Cookie

Referer     ---》 一般用来做防盗链

Accept    可接受数据类型   text/html     application/json    application/xml

后台部分:

1. 使用过的前端框架 Vue,bookstrap,nodejs。后端框架有 Django,Flask

2. 什么是ORM? 对象关系映射模型,django可以通过orm操作数据库,不需要使用sql语句。

3. Django将mode映射为数据库表的两句命令是:Python manage.py makemigrations   Python manage.py migrate

4. 简述什么是接口?什么是Restful?

接口是一个url(网址), 客户端可以通过接口获取后台返回的数据,数据格式一般为json或者xml。

一种接口设计规范。要求:通过请求方法来区分动作,例如get表示查询,post表示添加,put表示修改,delete表示删除。

5. 简述微信公众号的认证流程?  注册微信公众号。配置认证信息,包含url和token。配置后台服务器·   获取请求的四个字段,包括 sign ature,echo,time,****      将三个字段先排序在加密,若和signature一致则返回,表示认证成功。 提交。

6. 如何提高服务器的并发量? 负载均衡。更换服务器。优化后台代码逻辑。修改nginx或apache的配置。修改数据库的配置。修改内核。

 

7. GET和POST的区别?  参数位置(Get通过url提交数据,Post是在html header内提交)。参数长度(Get有1024 Byte,Post没有限制)。安全性(Get参数会出现在地址栏上,Post不会)

8. Python函数定义中常见的*args跟 **kwargs分别有什么用途?

*args和**kwargs主要用于函数定义。*args是用来发送一个非键值对的可变数量的参数列表给一个函数。

**kwargs 允许你将不定长度的键值对,作为参数传递给一个函数。会收集关键字参数

9. python2和python3的range(100)的区别?

py2返回列表,py3返回迭代器,节约内存

10. 一句话解释什么样的语言能够用装饰器?   函数可以作为参数传递的语言,可以使用装饰器

11. 简述cookie和session的区别?

session在服务器端,cookie在客户端(浏览器)。

session的运行依赖session id,而session id是存在cookie中的,也就说,如果浏览器禁用了cookie,同时session也会失效,存储session时,键与Cookie中的session相同,值也是开发人员设置的键值对信息,进行了base64编码,过期时间由开发人员设置。

cookie安全性比session差(伪造cookie信息获取信息,session也不是一定的安全,但相比cookie,sesssion更加安全)。

12. Django/Flash中一次HTTP请求的处理流程?

一个HTTP请求,首先被转化成一个HttpResquest对象,然后该对象被传递给Resquest中间件处理,如果该中间件返回了Response,则直接传递给response中间件做收尾处理。否则的话Resquest中间件将访问URL配置,确定哪个View来处理,在确定哪个View要执行,但是还没有执行该View的时候,系统会把request传递给View中间件处理器进行处理,如果该中间件返回了Response,那么该Response直接被传递给Response中间件进行后续处理,否则将执行确定的View函数处理并返回Response,在这个过程中如果引发了异常并抛出,会被Exception中间件处理器进行处理。

13. 进程,线程?

进程好像一条马路,线程是马路上的机动车道。

14. 三次握手,四次挥手?

 

挥手:客户端向服务器发送 断开连接 请求,服务器返回给客户端一个 响应,且服务器向客户端发送一个断开请求,客户端返回一个响应。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值