考试题目
第一部分:Python基础部分(13分)
- 写代码实现:val = “i am a string”,实现一个方法,将字符串逆序输出(2分)
v1=val[::-1]
- 判断101-200之间有多少个质数(2分)
提示:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的书叫质数-
b = 0 for a in range(101, 201): k = 0 for i in range(2, a): if a % i == 0: k += 1 if k == 0: b += 1 print(b)
-
- 简述正则表达式中的贪婪匹配并举例说明(2分)
-
1.什么是正则表达式的贪婪与非贪婪匹配 如:String str="abcaxc"; Patter p="ab.*c"; 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab.*c)。 非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab.*c)。 2.编程中如何区分两种模式 默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。 量词:{m,n}:m到n个 *:任意多个 +:一个到多个 ?:0或一个
-
- 写代码(3分)
v1 = {11,22,33}
v2 = {22,44,55}
a. 如何获取 v1 中存在而v2中不存在的值?
b. 如何获取 v2 中存在而v2中不存在的值?
c. 如何获取v1和v2中都存在的值?-
l3 = v1-v2 l4 = v2-v1 l5= v1&v2
-
- 请编写一个函数实现将IP地址转换成一个整数(4分)
如 10.3.9.12 转换规则为:
10 00001010
3
00000011
9 00001001
12 00001100
def iptoint(num): h = [] s = num.split(".") for temp in s: a = bin(int(temp))[2:] a = a.zfill(8) h.append(a) g = "".join(h) e = int(g, 2) print(e) iptoint('7.91.205.21')
再将以上二进制拼接起来计算十进制结果,即:
00001010 00000011 00001001 00001100 = ?
第二部分:MySQL数据库(22分)
- MySQL中char和varchar的区别(1分)?
- 变长度和定长度,找的速度定长快点
- MySQL中varchar(50)的50表示什么意思?(1分)
- VARCHAR列中的值为可变长字符串。长度可以指定为0到65535之间的值。VARCHAR的最大有效长度由最大行大小和使用的字符集确定。在MySQL 4.1之前的版本,VARCHAR(50)的“50”指的是50字节(bytes)。如果存放UTF8汉字时,那么最多只能存放16个(每个汉字3字节)。从MySQL 4.1版本开始,VARCHAR(50)的“50”指的是50字符(character),无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。
- left join、right
join以及inner
join的区别?(2分)
- left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
- left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
- MySQL组合索引(2分)
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. 性别为女的所有学生。
b. 学生表中类别分别对应的个数。
c.工资少于10000的女研究生教师的省份证和姓名。
d. 研究生教师平均工资、最高和最低工资。
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 |
水杯 |
- 根据如下表查询每个用户第一次下订单的时间。(2分)
- 有一个订单系统包含订单信息、商品信息、价格信息且还要一些状态,如何设计表结构(2分)
- 有如下表:(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分)
- 查询没有学生的所有班级。(2分)
- 查询有学生的所有班级的名称和学数量。(2分)
第三部分:Django(20分)
- 列举你熟悉的Http协议头以及作用。(1分)
- 状态码含义:200、301、302、304、404、500。(2分)
- 200:访问成功(表示一切正常,返回的是正常请求结果)
302:临时重定向(指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出)
304:未修改(表示客户机缓存的版本是最新的,客户机应该继续使用它。)
404:访问的文件不存在(服务器上不存在客户机所请求的资源)
500:内部服务器错误(服务器端的CGI、ASP、JSP等程序发生错误)
- 200:访问成功(表示一切正常,返回的是正常请求结果)
- 简述cookie和session?(2分)
- django中get和filter的区别?(1分)
- django的中间件在1.7和1.11版本间有什么区别?(1分)
- django中contenttypes组件的作用?(1分)
- django中Q的作用?(2分)
- 将如下SQL语句使用Django的ORM实现:(3分)
select * from order where id >= 12
select * from order where id != 12
select * from order where id in [1,3,4]
select * from order where id between 20 and 100
select * from order where id > 20 and (num < 60 or num > 70 )
select * from order order by id desc,age asc - 编写查询语句:(5分,前2个每个1分,最后一题3分)
- 查看所有学生,并打印 姓名、班级名称
- 查看班级名称为"全栈12期"的所有学生
- 查看没有学生的所有班级ID、班级名称
- django中遇到复杂的SQL时ORM无法完成,如何使用原生SQL执行?(2分)
第四部分:路飞学城相关(32分)
- 简述 restful 规范?(2分)
- 简述 django rest framework的各大组件以及作用(2分)
- 路飞学城购物流程中为什么使用Redis?(1分)
- 请简要写出路飞学城购物流程在redis中的数据结构?以及简述为何如此设计?(2分)
- 支付宝支付时付款金额的精度?(1分)
- 支付宝支付时用的什么加密?(1分)
- 支付流程中,如果用户在支付宝页面支付成功的同时,路飞学城服务器宕机了,用户订单状态未更新,如何解决?(1分)
- 简要路飞学城中课程相关的13张表以及相关之间的FK、o2o、m2m
关系(4分)
注意:使用伪代码表述即可。 - 路飞学城表结构查询(10分)
- 查看所有学位课并打印学位课名称以及授课老师
- 查看所有学位课并打印学位课名称以及学位课的奖学金
- 展示所有的专题课
- 查看id=1的学位课对应的所有模块名称
- 获取id=1的专题课,并打印:课程名、级别(中文)、why_study、what_to_study_brief、所有recommend_courses
- 获取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分)
- redhat ubuntu centos
- 如何获取文件
oldboy.log 的末尾两行数据?(1分)
- tail -n 2
- vim中如何一次删除光标所在行及后面2行?(1分)
- 如何查看当前网络的网关地址?(1分)
- route -n
- 如何过滤出文件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分)
-
useradd -s /sbin/nologin <new username>
-
- 如何删除用户 alex (1分)
- sudo userdel alex
第五部分:附加题
提示:此题是面试真题,并且在面试中经常会遇到临时让你来设计的题目,该题各组私下可以进行一起讨论并设计。