JD 临阵磨枪仓促应战押题版 (面试前绝密) 2019/10/27 公开 完全未压中!!!

昨天接到个电话, 北京的,因为正在午睡,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)

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值