2019-07-10


数据库知识

事务是为了解决什么(原子性?一致性?隔离性?持久性?),什么情况下需要用到事务?

 处理一系列业务处理的执行逻辑单元,该单元里的一系列类操作要不全部成功要不全部失败

当数据库需要处理操作量大、复杂度高的数据的时候需要用到事务。

索引的优缺点,什么情况下需要用到索引?

优点:

(1)加快数据检索速度,提高对数据访问效率

(2)提高数据查询性能

缺点:

(1)占用大量硬盘空间

(2)数据的增删改等更新操作,需要维护索引时间,降低更新速度

使用场景:

(1)主键列中创建索引

          (2)多表连接时连接列创建索引

          (3)where子句查询的列

          (4)需要经常GROUP BY和ORDER BY的列

什么表关联,外关联?

表关联:是指将两个或两个以上的表按照一对一、一对多、多对多等关系使用外键关联起来,方便后期的数据查询

外关联:是指一个表的外键是参照另一个表的

聚集函数有哪些(举例sum)?

count():表示计算总行数

max(列):表示求此列的最大值

min(列):表示求此列的最小值

sum(列):表示求此列的和

avg(列):表示求此列的平均值

Python 中命名里单下划线和双下划线分别是代表什么意思?举几个双下划线的例子(如 __init__)

单下划线:表示的是保护变量,只有类对象和子类对象才能访问到这些变量;而且是不能直接访问的类属性,需通过类提供的接口进行访问。

双下划线:表示的是私有变量,只有类对象自己能访问,连子类对象也不能访问到这个数据。如:__name__、__main__、__init__

写出 {idx: val for idx, val in enumerate(['a', 'b', 'c'])} 的结果

{0: 'a', 1: 'b', 2: 'c'}

range(5)[2:-2] 的结果是什么? ['a', 'b', ‘c’][::-1] 的结果是什么?

前者的结果是2;后者的结果是’c’,’b’,’a’

filter、map、reduce用途各是什么?

filter:filter 的作用是生成一个新数组,在遍历数组的时候将返回值为 true 的元素放入新数组,可以利用这个函数删除一些不需要的元素

map:作用是生成一个新数组,遍历原数组,将每个元素拿出来做一些变换然后放入到新的数组中。

reduce:该函数的功能是进行按照要求进行累计的效果

HTTP请求中GET和POST有什么区别?

(1)GET请求资源数据,POST向服务器传递需要处理的数据

(2)GET传递数据大小不超过2kb,POST没有限制

(3)GET请求的参数会在Url上暴露显示,POST请求参数在Requestbody里,所以相对GET来说,POST安全性较高

(4)GET 请求的静态资源会被浏览器缓存,POST不会被缓存

(5)GET传递的数据类型是文本,POST是文本或者二进制

(6)GET请求被回退时是无害的,POST请求被回退是会被重新再执行一次

什么是单例模式?什么情况需要用到单例模式。

单例模式:它是一种常用的软件设计模式,目的是使得类的一个对象成为系统中的唯一实例,即一个类只有一个实例对象。

使用场景:

(1)要求生产唯一序列号。

  (2)WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。

(3)创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

编程题

去除列表中的重复元素(加分题:去除列表中的重复元素并保留原列表顺序[1, 3, 3, 4, 2, 2] -> [1, 3, 4, 2])

list1=[1,3,3,4,2,2]new_list = []for i in list1:    if i not in new_list:        new_list.append(i)print(new_list)

根据已有表结构,写出满足需求的SQL

学生表 student (student_id, student_name,student_age)  具体字段类型忽略

课程表 course (course_id, course_name, teacher_id)         teacher_id 可为空,为空表示老师未确定

成绩表 student_score (student_id, course_id, score)          score 可为空,为空表示选课还未考试

教师表 teacher (teacher_id, teacher_name)

列举所有课程情况,需要展示课程名,老师名,按课程名排序。(加分题:老师不确定的课程也需要列出来)

select teacher_name,course_name from teacher,course order by course_name   

 having teacher_id =teacher_id;

列举学过老师 A 所教的所有课的同学的学号、姓名

select student_id from student where student_id(select * from course where teacher_Id =(select teacher_id from teacher where teacher_name=A)) as P;

select student_id ,student_name from student where student_id = P;

删除课程 b。(还需要额外清理什么数据?)

delete  from course where course=b;

事务的隔离级别有几种,分别是什么?MySQL默认隔离级别是什么?

(1)读未提交

(2)读已提交

(3)可重复读

(4)串行

Mysql的默认隔离级别是可重复读

什么是GIL?他会有哪些影响?如何解决?

GIL全称全局解释器锁,作用是在单核的情况下可以实现多并发。

影响:在使用多线程的时候无法实现并行。

解决方法:

(1)更换解释器

(2)使用多进程完成多任务的处理

(3)换成一个cpu,一个进程,进程池


简述一个你熟悉的web框架,及特点(如优缺点)。

Django优点:

(1)Django上手比较容易,开发文档详细、完善,相关资料丰富

(2)Django自带的模板引擎简单好用

(3)Django debug信息详尽: 很容易找出代码错误所在。

(4)自带后台管理系统admin

(5)自带大量常用工具和框架, 适合快速开发企业级网站。


Django缺点:

(1)Django在开发小型网站时给人一种“杀鸡焉用牛刀的感觉”

(2)过度封装,直接使用比较简单,但是需要改动时特别麻烦

(3)灵活程度不高,不如Flask轻便

你可能感兴趣的:(2019-07-10)