python web后端,笔试面试题二

一、基础题目


0.如何持久化保存Python对象?请写出至少两种方法并比较它们的优缺点
存入数据库
存入文件中
数据库读写操作快
文件操作较慢


1.如何在NOSQL数据库中实现类似于SQL的外键关系
把外部数据直接放到原数据集中


2.str1=['a','b','c','d','x','y','z']*10000,有以下两段代码:
a)
output=''
for y in str1:
    outout += y
b)
output=''.join(str1)
 
如果是你,你会选择哪段代码来完成合并字符的操作,为什么?
选择第二种,首先字符串是不可变类型,用for循环占用内存太多,循环较为耗时,代码可读性也比较差,选择第二种,只创建一个字符串对象,代码可读性较高节省内存


3.有如下四张表
table1: student(name,age,gender)
table2: course(name,teacher_name(对应teacher表name字段))
table3: grade(student_name(对应student表name字段段),course_name(对应course表name字段),score)
table4: teacher(name)
其中course表中的name包括三种:math、english、 physics,请写出sql语句完成以下查询


(1)查询所有数学成绩好于英语成绩的学生的姓
select student_name from grade where math>english;
 
(2)查询所有没有学习过'Alice'老师的课的学生的姓名
select g.name from grade as g,course as c where g.course_name=c.name and course.teacher_name!='Alice';


(3)查询各门课程的最高分和最低分,并以课程名,课程最高分,课程最低分的顺序显示
select course_name,max(score) as max,min(score) as min from grade group by course_name;


二、编程题目(请粘贴源代码及运行结果)三道题目任选两道完成即可


0.请用python代码实现生产者一消费者模型(Producer-consumer problem)(请使用python标准库提供的模块完成)


1.写一个python程序,输入两个无序的数组,合并两个数组并生成一个新的有序数组.同时指出你所使用的排序算法的时间复杂度
a = [8, 1, 2, 3, 4]
b = [1, 3, 5, 7, 9]
c = a + b
c = set(c)
c = list(c)
print(c)
待解决:排序算法的时间复杂度


2.现有不限数量的面额分别为1元,2元,5元,10元的货币,如果要用这些货币组合成x元,求共有多少种组合方式?请说出这类问题在算法中被称为什么问题并用代码实现
----待解决


三、应用题目
0.针对一个类似饿了么的APP服务,设计其数据库表,包括用户,订单,餐馆,食物,地址,派送管理等信息,设计内容包括字段名,数据类型,关联关系,约束,索引等,并文字说明(请以表格形式列出,使用表格工具请点击右上角插入->表格)
----待解决


1.针对上面的服务,设计RESTful风格的API接口,包括注册,登录,密码找回,短信验证等功能(写出API的method,输入,输出,并做必要说明即可,无需代码实现)
----待解决

你可能感兴趣的:(web)