该篇文章记录的都是自己去各家面试时被问到的问题,在当时面试的时候可能回答不上或者答不完全,回来整理之后记录下来,重新回答问题的同时也反省自己的不足。回答问题的时候不要仅仅局限于回答的表面
1.你熟知的数据结构有哪些?
按照逻辑结构区分:
1、集合 (所有元素都归属于该集合,并没有什么关系) 2、线性表(一对一关系) 3、树(一对多关系) 4、图(多对多关系)
线性表的变种:队列、栈 (即使变种也是线性表)
线性表的特性:1、只有一个头元素,2、只有一个尾元素,3、除了头元素,其他元素都有前驱元素,4、除了尾元素,其他元素都有后继元素
按照存储结构区分:
1、顺序存储 2、链式存储
所有的数据结构都可以以这两种结构存储
2.你知道哪些模型?USR模型(用户 角色 资源)模型你了解么?你如何在不使用session的情况保证用户登陆权限验证?
3.递归和匿名函数有什么区别?递归的思想是什么?匿名函数的优点?
4.python的函数式编程有什么?他们代表了什么设计思想?
python函数式编程有(map,filter,reduce)
设计思想:函数也是可以作为一个变量传递给函数的,函数不仅仅就是个函数,也是可以作为变量的....
5.你知道什么设计模式?你能说出你知道的设计模式的具体应用么?
6.你了解Oauth么?知道是怎么实现的么?
7.二叉树结构的遍历方式有几种?前中后序遍历的顺序是什么?
二叉树结构的遍历方式:前序,中序,后序
用英文的方法去记 D:根节点 L:左节点 R:右节点,遍历的时候总是先左后右,不同的只是遍历时候根的顺序,所以只要记住根的顺序就很方便记下来了
前序:DLR
中序:LDR
后序:LRD
8.你清楚多少种排序方式?请阐述一下快排的实现?在二叉树的数据结构下实现快排?
1、快排, 以一个数为基数,将对象分割成两边,一边比基数大,一边比基数小,将两边以同样的方式利用递归的思想,解决即可实现排序
2、以根节点作为分割的基数,左节点比根节点大,右节点比根节点小
9.python中函数式编程和面向对象编程有什么不同?