全栈11期考试题
考试须知:
- 分值:100分
- 考试时间:3小时
- 考试类型:闭卷考试
- 考试纪律:
- 教室断网
- 禁止翻阅笔记
- 禁止互相讨论
- 禁止拷贝
- 以上情况,一经发现取消考试成绩并处以留级处理。
考试范围
- Python基础
- 数据库
- django
- 路飞学城相关
- Linux
考试题目
第一部分:Python基础部分(13分)
- 写代码实现:val = “i am a string”,实现一个方法,将字符串逆序输出(2分)
val = “i am a string”
val.reverse()
- 判断101-200之间有多少个质数(2分)
提示:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的书叫质数 - 简述正则表达式中的贪婪匹配并举例说明(2分)
math匹配尽量多的字符,
seroutch
- 写代码(3分)
v1 = {11,22,33}
v2 = {22,44,55}
a. 如何获取v1 中存在而v2中不存在的值?
list=[]
For i in v1:
If i not in v2:
list.appent(i)
Print (list)
b. 如何获取v2 中存在而v1中不存在的值?
list=[]
For i in v2:
If i not in v1:
list.appent(i)
Print (list)
c. 如何获取v1和v2中都存在的值?
list=[]
For i in v1:
For j in v2;
If i ==j:
list.appent(i)
Print (list)
- 请编写一个函数实现将IP地址转换成一个整数(4分)
如10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
a = '10.3.9.12'
list = []
a.split('.')
fori ina:
list.appent(bin(i))
print(list)
再将以上二进制拼接起来计算十进制结果,即:
00001010 00000011 00001001 00001100 = ?
第二部分:MySQL数据库(22分)
- MySQL中char和varchar的区别(1分)?
#Char是定长的,必须先设置字符串长度,用或不用都会占用这么多字节,查询速度快 #varchar 是变长的,会根据长度自动匹配长度,查询速度慢
- MySQL中varchar(50)的50表示什么意思?(1分)
#Varchar的50代表最大长度的字符
- left join、right join以及inner join的区别?(2分)
#left join 左关联,主表在左边,右边为从表。如果左侧的主表中没有关联字段,会用null 填满 #right join 右关联 主表在右边和letf join相反 #inner join 内关联只会显示主表和从表相关联的字段,不会出现null
- MySQL组合索引(2分)
#组合索引abc(a,b,c) 当有多字段时用多字段组合使用 #最左前缀 #命中: # a,ab,ac,abc #不命中: # b,c,bc
where子句中有a、b、c 三个查询条件,创建一个组合索引abc(a,b,c),那么如下那中情况会命中索引:
# a. where (a) # 会命中索引 # b. where (b) # 不会命中索引 # c. where (c) # 不会命中索引 # d. where (a,b) # 会命中索引
# e. where (b,c) # 不会命中索引 # f. where (a,c) # 会命中索引 # g. where (a,b,c) # 会命中索引
- 假设学生Student和教师Teacher关系模型如下:(4分)
Student(学号、姓名、性别、类型、身份证号)
Teacher(教师号、姓名、性别、类型、身份证号、工资)
其中,学生表中类别为“本科生”和“研究生”两类;性别为“男”和“女”两类。
a. 性别为女的所有学生。
#select * from Student where 性别=“女”;
b. 学生表中类别分别对应的个数。
#select count(id) from Student group by 类型;
c.工资少于10000的女教师的省份证和姓名。
#select 姓名,身份证号 from Teacher where fiter(工资<=10000);
d. 研究生教师平均工资、最高和最低工资。
#select avg(工资),mini(工资),max(工资) from Teacher where 类型="研究生";
select max(工资)mini(工资) from Teacher on(select * from Student where 类别=“本科生”);
- 根据如下表结构建表:(2分)
id(自增主键) |
name(非空) |
balance(非空) |
1 |
A |
19.50 |
2 |
A |
20.50 |
3 |
B |
100.00 |
- 根据如下表查询每个用户第一次下订单的时间。(2分)
id |
name |
order_time |
sku |
1 |
铁锤 |
2018/11/11 |
篮球 |
2 |
铁锤 |
2018/11/12 |
足球 |
3 |
钢弹 |
2018/11/01 |
电脑 |
4 |
钢弹 |
2018/11/15 |
水杯 |
用户表
id name 订单id(一对多)
订单详情表
订单id order time sku
- 有一个订单系统包含订单信息、商品信息、价格信息且还要一些状态,如何设计表结构(2分)
商品信息
商品id name 价格id(一对一)
价格信息
价格id 价格
订单信息
商品id(一对多) 订单id 订单时间 订单状态
- 有如下表:(3分)
products(商品表) columns为id、name、price
orders(商城订单表) columns为id、reservations_id、product_id、quantity(数量)
reservations(酒店订单表) columns为id、user_id、price、created_at
a. 各个商品的售卖情况,需要字段:商品名、购买总数、商品收入(单价*数量)
b. 所有用户在2018-01-01至2018-02-01下单次数、下单金额、商城下单次数、商城下单金额
c. 历月下单用户数:下单1次的用户数、下单2次的用户数、下单3次及以上的用户数 - 根据表写SQL语句:(5分)
- 查询所有同学的学号、姓名、班级名称。(1分)
- select sid name from student
- 查询没有学生的所有班级。(2分)
- 查询有学生的所有班级的名称和学数量。(2分)
第三部分:Django(20分)
- 列举你熟悉的Http协议头以及作用。(1分)
head,post,get,option,put,delete,catch 等等….
- 状态码含义:200、301、302、304、404、500。(2分)
200状态成功,301重定向原地址永久删除,302重定向原地址可用,304重定向,404网页加载失败,500服务器错误
- 简述cookie和session?(2分)
cookie是存放在浏览器上的键值对,用来保存用户的状态
session是服务器端的容器,用来保存用户的信息,session key是随机字符串,session依赖于cookie,把随机字符串保存在浏览器上。
- django中get和filter的区别?(1分)
get返回对象,找不到会报错
filter返回querset,找不到会返回None
- django的中间件在1.7和1.11版本间有什么区别?(1分)
假设django有4个中间件,
在1.7中任意中间件request有值得时候,会直接跳到最后一个中间件执行response。
在1.11中任意中间件request有值得时候,会跳到当前中间件的response
- django中contenttypes组件的作用?(1分)
contenttypes是django自动创建的表里边有所有的app和表的对应关系,当使用一对多外键关联所有表的时候就可以用contenttypes
- django中Q的作用?(2分)
用来复杂的过滤信息 例如filter或 | (管道符号)
- 将如下SQL语句使用Django的ORM实现:(3分)
select * from order where id >= 12
models.order.object.filter(id >= 12)
select * from order where id != 12
models.order.object.excloud(id = 12)
select * from order where id in [1,3,4]
models.order.object.exite([1,3,4])
select * from order where id between 20 and 100
models.order.object.filter(between(20 100))
select * from order where id > 20 and (num < 60 or num > 70 )
select * from orderorder by id desc,age asc
- 编写查询语句:(5分,前2个每个1分,最后一题3分)
- 查看所有学生,并打印姓名、班级名称
Student_obj=models.Student.objects.filter(name)
Print(Student_obj.name ,Student_obj.classes__classes)
- 查看班级名称为"全栈12期"的所有学生
Models.Classes.objects.filter(name="全栈12期").valuse(Student__name)
- 查看没有学生的所有班级ID、班级名称
Models.Classes.objects.filter(count(name) = 0).valuse(name,id)
- django中遇到复杂的SQL时ORM无法完成,如何使用原生SQL执行?(2分)
第四部分:路飞学城相关(32分)
- 简述restful 规范?(2分)
1 url中要表示资源2要使用https,不要使用hettp 3 url要有api标识4url要有版本信息5 url可以过滤信息6 根据请求方式执行不同方法7根据请求方式不同返回不同信息8 返回错误信息9返回状态码10 超文本连接heaper link
- 简述django rest framework的各大组件以及作用(2分)
- 路由 根据路由找对应视图
- 视图 用来处理逻辑相关
- 版本 用来过滤不同的版本
- 认证 确认用户有没有资格
- 权限 用来查看用户有没有权限
- 频率 控制用户频繁访问
- 解析器 用来解析用户发来的请求
- 渲染器 用来渲染末班
- 序列化 用来前端的信息
- 分页器 用来给前端返回的信息,分页
- 路飞学城购物流程中为什么使用Redis?(1分)
因为redis运行在内存中查看速度快,中间状态:订单在提交成功后没有必要存到数据库,购物车中的数据就清除了。
- 请简要写出路飞学城购物流程在redis中的数据结构?以及简述为何如此设计?(2分)
pricepolicy={1:{
id=”id”,
有效时间:”有效时间”,
price:”price”
},
2:{
id=”id”,
有效时间:”有效时间”,
price:”price”
},
}
luffy_car_用户id_课程id:{
title:” title ”,
img_src : “ 图片的地址 ”,
pricepolice:pricepolicy
}
- 支付宝支付时付款金额的精度?(1分)
小数点后两位
- 支付宝支付时用的什么加密?(1分)
RAF加密
- 支付流程中,如果用户在支付宝页面支付成功的同时,路飞学城服务器宕机了,用户订单状态未更新,如何解决?(1分)
支付宝支付成功,服务器会在24小时之内,一直给路飞学成发信息。如果超过24小时,只能手动更改。
- 简要路飞学城中课程相关的13张表以及相关之间的FK、o2o、m2m 关系(4分)
注意:使用伪代码表述即可。- 课程大纲
- 课程子节点
- 专业课表
- 课程详情表
- 教师表
- 奖学金表
- 学位课表
- 章节
- 课时表
- 优惠券表
- 常见问题
- 价格策略
- 路飞学城表结构查询(10分)
- 查看所有学位课并打印学位课名称以及授课老师
list=models.学位课.object.all()
for I in list:
i.name,i.()
- 查看所有学位课并打印学位课名称以及学位课的奖学金
models.学位课.object.filter().valuer(name,学位课对应奖学金的字段__)
- 展示所有的专题课
models.Course.object.all()
- 查看id=1的学位课对应的所有模块名称
- 获取id=1的专题课,并打印:课程名、级别(中文)、why_study、what_to_study_brief、所有recommend_courses
- 获取id=1的专题课,并打印该课程相关的所有常见问题
CourseObj=models.Course.object.filter(id=1)
- 获取id=1的专题课,并打印该课程相关的课程大纲
- 获取id=1的专题课,并打印该课程相关的所有章节
- 获取id=1的专题课,并打印该课程相关的所有的价格策略
- 获取id=1的专题课,并打印该课程相关的所有课时
- git相关(8分)
- 列举常见的git命令?
- git协同开发的流程?
- 遇到临时bug怎么办?
- 如何划分分支?
- 如何做代码review?
- git pull 和git fetch的区别?
- git merge 和git rebase的区别?
- 如何给别人的开源项目贡献代码?
第四部分:Linux(13分)
- 列举Linux常见发行版?(1分)
红帽,乌班图
- 如何获取文件oldboy.log 的末尾两行数据?(1分)
- vim中如何一次删除光标所在行及后面2行?(1分)
- 如何查看当前网络的网关地址?(1分)
ifconfig
- 如何过滤出文件bb中包含haha关键字的行,并同时显示行号。(1分)
- 如何快速清空文件oldboy.log 。(1分)
- 如何用scp把机器10.1.1.4上/tmp/目录下的文件file拉回到本机?(2分)
提示:用户名root,ssh端口号12345 - 如何把文件/root/xxoo的权限配置为:属主可读、可写、可执行的权限,属组及其他用户没有任何权限。(2分)
注意:使用数字表示权限的方式进行配置 - 如何创建用户alex,并指定用户shell为/sbin/nologin (2分)
- 如何删除用户alex (1分)
第五部分:附加题
提示:此题是面试真题,并且在面试中经常会遇到临时让你来设计的题目,该题各组私下可以进行一起讨论并设计。