前言
网上有大量的基础面试题目,但是通过面试python后台开发,掌握的一些基础面试题,觉得有必要整理出来,以便日后查阅;
正文
一、面试基础题目;
1、可迭代对象、迭代器与生成器的区别?
(1)迭代器是一个可以记住遍历的位置的对象,基本方法有iter()和next(),迭代器可以记住遍历位置的对象;
(2)生成器是一种特殊的迭代器,返回值不通过return而是通过yield;
(3)使用iter内置函数可以获取迭代器的对象。如果对象实现了能返回迭代器的__iter__方法,那么对象就是可迭代的;
2、redis知识点?
(1)Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API;
3、三次握手四次挥手?
4、进城与线程的区别?
(1)一个进程可以管理一个及一个以上的线程;
(2)一个进程相当于一个应用程序,一个线程相当于一个应用程序的一个功能分支;
5、python里面使用线程的缺点?
(1)GIL导致PYTHON 无法使用到计算机的多核,仅能使用单核;
(2)python想要提高效率,可以使用多个进程,不要使用多个线程;
6、GIL锁什么时候会释放?
7、python垃圾怎么回收的?
8、python上下文管理器?
9、存储引擎innodb的特性?
10、mysql事物有哪些特性?
11、数据库索引的功能是什么?
12、innodb索引数据结构是什么样的?
13、mysql建索引需要注意哪些事项?
14、数据库怎么优化慢查询?
15、表的拆分有哪些纬度?
16、什么情况下会用上读写分离?
17、mysql的binlog主要有哪些信息?
18、kafka和rabbitmq的区别?
19、数据结构算法,常用十大排序算法,时间复杂度、空间复杂度简单说下?
20、二叉树镜像反转代码,手写?
class Node(object): def __init__(self, value=None, lchild=None, rchild=None): self.value = value self.lchild = lchild self.rchild = rchild def mirror(root): """翻转镜像""" if not root: return root.lchild, root.rchild = root.rchild, root.lchild mirror(root.lchild) mirror(root.rchild) def in_order_traverse(root): """中序遍历""" if not root: return in_order_traverse(root.lchild) print(root.value) in_order_traverse(root.rchild) if __name__ == '__main__': root = Node(1, Node(2, Node(4), Node(5)), Node(3)) mirror(root) # 翻转二叉树 in_order_traverse(root) # 中序遍历
21、hadoop怎么进行容错的?
22、http协议常见请求方法有哪些?状态码有哪些?
23、https和http的区别,https怎么进行加密的?
24、tcp与udp协议的区别?
25、tcp协议如何进行流量控制?
26、git如何管理分支?