昨天接到个电话, 北京的,因为正在午睡,mmp, 错过了, 还以为又是人机重播告诉我宣讲的消息,也没在意。结果刚刚接到电话,说是JD的, 听声音是我第一次让我面试的那个hr。。JD能给我这个彩笔一次面试机会,我还是很感激的,一面的来西安面试官人还不错,虽然一开始看到我的简历,还半开玩笑的说他收到的简历都是硕士的,,,以为9.19准挂的面试,在今天10.17赢来的转机,应该是同一个hr,告诉我要加一面, 我也知道这个加一面, 是一面挂了,可能是补面, 也可能是其他部门的一面,,总之感谢JD...
1 二叉树的前中后层序
2 二叉排序树, 二叉查找树, 二叉搜素树, 一个东西,不知道你还记不记得,数组转二叉树, 就是那个结构, 每个左孩子比父节点小, 父节点又比它的右孩子小
3 mysql索引
介绍一下索引?怎么使用索引的?
索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。
索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。本质:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。
mysql的索引分为单列索引(主键索引,唯一索引,普通索引)和组合索引。
单列索引:一个索引只包含一个列,一个表可以有多个单列索引;组合索引:一个组合索引包含两个或两个以上的列。
1.单列索引
1)普通索引,这个是最基本的索引,
其sql格式是 CREATE INDEX IndexName ON `TableName`(`字段名`(length)) 或者 ALTER TABLE TableName ADD INDEX IndexName(`字段名`(length))
2)唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,
其sql格式是 CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length)); 或者 ALTER TABLE TableName ADD UNIQUE (column_list)
3)主键索引,不允许有空值,(在B+TREE中的InnoDB引擎中,主键索引起到了至关重要的地位)
主键索引建立的规则是 int优于varchar,一般在建表的时候创建,最好是与表的其他字段不相关的列或者是业务不相关的列.一般会设为 int 而且是 AUTO_INCREMENT自增类型的
2.组合索引
一个表中含有多个单列索引不代表是组合索引,通俗一点讲 组合索引是:包含多个字段但是只有索引名称
其sql格式是 CREATE INDEX IndexName On `TableName`(`字段名`(length),`字段名`(length),...);例:
CREATE INDEX nickname_account_createdTime_Index ON `award`(`nickname`, `account`, `created_time`);
|
https://www.cnblogs.com/tsdblogs/p/9977364.html
class TreeNode:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
class Solution:
def __init__(self):
self.tmp = []
def max_depth(self, root):
if not root:
return 0
left = self.max_depth(root.left)
right = self.max_depth(root.right)
return max(left, right) + 1
def max_distance(self, root):
if not root:
return 0
self.tmp.append(self.max_depth(root.right) + self.max_depth(root.left))
self.max_distance(root.left)
self.max_distance(root.right)
return max(self.tmp)
node4 = TreeNode(4)
node5 = TreeNode(5)
node3 = TreeNode(3)
node2 = TreeNode(2, node4, node5)
node1 = TreeNode(1, node2, node3)
s = Solution()
print(s.max_distance(node1))
LRU缓存方案
利用双边队列 和 集合
from collections import deque
class LRU(object):
def __init__(self, cache_size):
self.cache_size = cache_size
self.que = deque()
self.hash_set = set()
def is_full(self):
return len(self.hash_set) == self.cache_size
def add_num(self, page_num):
if self.is_full():
self.hash_set.remove(self.que.pop())
self.hash_set.add(page_num)
self.que.appendleft(page_num)
def access(self, page_num):
if page_num not in self.hash_set:
self.add_num(page_num)
elif self.que[0] != page_num:
self.que.remove(page_num)
self.que.appendleft(page_num)
if __name__ == "__main__":
l = LRU(3)
l.access(1)
l.access(2)
l.access(5)
l.access(1)
l.access(6)
l.access(7)
print(l.que)