首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
别问了别问了答不出来了
门头沟学院 后端
发布于湖北
关注
已关注
取消关注
mark
@牛客373996258号:
滴滴 一面
1.你能说一下JAVA有哪些集合吗?2.HashMap和TreeMap有什么区别?3.解决哈希冲突的方法4.那TreeMap底层是什么数据结构?红黑树+HashMap5.常见的树有哪些?6.二叉搜索树、平衡树、红黑树区别是什么?二叉搜索树(Binary Search Tree, BST)、平衡树(Balanced Tree)和红黑树(Red-Black Tree)都是一种数据结构,用于快速地搜索、插入、删除数据。它们之间的区别如下:二叉搜索树(BST)是一种二叉树,它的左子树中所有节点的值都小于根节点的值,右子树中所有节点的值都大于根节点的值。这个特性使得在BST上进行搜索、插入和删除操作非常高效。平衡树是指树中每个节点的左右子树高度相差不超过1的二叉搜索树。常见的平衡树有AVL树、红黑树等。由于BST可能会出现极端情况下的不平衡(如只插入递增或递减的数据),导致最坏情况下时间复杂度退化到O(n),因此出现了平衡树这种数据结构,它可以自动调整节点位置来保证树的平衡性,从而保证最坏情况下的时间复杂度依然是O(log n)。红黑树是一种自平衡的二叉搜索树,它是一种近似平衡的二叉树,能够确保任何一个节点的左右子树的高度差不会超过两倍。红黑树的节点被标记为红色或黑色,每个节点的颜色是用来确保在插入、删除节点时,树的平衡性不被破坏的。红黑树的性质保证了它的最坏情况下的时间复杂度是O(log n),是一种高效的数据结构,广泛应用于编译器、操作系统、数据库等领域。总之,BST是最简单的搜索树,平衡树能够解决BST的不平衡问题,红黑树是一种高效的自平衡树。7.Mysql采用B+树当索引的原因是什么?MySQL采用B+树作为索引的原因有以下几点:B+树支持高效的范围查询,适合于数据库中频繁进行的范围查询操作。B+树具有较高的数据访问性能,能够快速定位到目标数据所在的位置,提高了数据库的查询效率。B+树的叶子节点构成了一个有序链表,便于按照顺序遍历数据,支持ORDER BY操作。B+树的节点通常被设计为一页大小,适合于现代操作系统的内存管理方式,能够最大化地利用内存资源,减少磁盘IO的次数。B+树的平衡性良好,插入和删除操作不会导致树的结构失衡,保证了查询效率的稳定性和可靠性。8.为什么B+树可以顺序查找?B+树可以顺序查找的原因是,B+树中的数据按照键值有序排列,并且相邻节点之间有指针相连,可以很快地遍历整个B+树。在进行顺序查找时,可以从B+树的最左叶子节点开始,依次遍历所有的叶子节点,完成整个B+树的遍历。由于B+树的节点可以存储多个键值,因此可以减少I/O操作,提高查找效率。9.跳表的时间查询复杂度是多少?跳表(Skip List)是一种支持快速查找的数据结构,它通过在原始有序链表上建立多级索引来加速查找操作。跳表的时间查询复杂度为 O(log n),其中 n 是跳表中元素的个数。在跳表中,每一层索引都是原始链表的一个子集,且每一层的索引节点数量是下一层索引节点数量的一半。因此,跳表的高度为 log n,其中 n 是元素的数量。在进行查询操作时,从跳表的顶层索引开始遍历,找到第一个大于或等于要查找元素的索引节点,然后转到下一层索引进行查找。直到最后一层索引找到该元素或者该元素不存在为止。由于跳表的高度是 log n,因此查找操作的时间复杂度为 O(log n)。与二叉搜索树相比,跳表的平均情况下查询操作的时间复杂度也为 O(log n),但是跳表的实现相对简单,且在并发环境下具有较好的性能表现。10.Mysql索引有哪些索引?Hash、B+树、Full-text索引11.假如我现在建了一个联合索引,abc,选b或者c不带a,会用到索引吗?12.select a改为select *,where条件不变,会用到索引吗?select * 走不走索引与结果集大小无关,而应该和结果集数量有关。查询的结果集,超过了总行数 25%,优化器就会认为没有必要走索引了。13.你知道覆盖索引吗?1.就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。2.高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫 做覆盖索引。3.是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)14.为什么要主键索引和其他的索引联合使用?为什么要对其他字段设索引?联合索引指的是其他字段和主键索引一起做了一个索引,此时在进行查询的时候,会走向左匹配原则,不会回表查询。因为有些字段的查询如果通过主键索引,难以查找到真实数据。15.做过sql分析吗?假如给你一个慢查询的sql,你怎么分析?1.定义慢查询2.数据库开启慢查询日志3.找到慢查询日志-查找查询时间最慢的sql4.explain分析,explain各个字段的解释5.profile分析,Show profile 是mysql 提供可以用来分析当前会话中语句执行的资源消耗情况--看到是磁盘IO还是网络IO的问题16.explain语句你看的话,你会看什么字段?id、type、key、rows、Extraid:每个执行计划都有一个 id,如果是一个联合查询union,这里还将有多个 id。select_type:表示 SELECT 查询类型,常见的有四种SIMPLE(普通查询,即没有联合查询、子查询)、PRIMARY(主查询)、UNION(UNION 中后面的查询)、SUBQUERY(子查询)等。table:当前执行计划查询的表,如果给表起别名了,则显示别名信息。partitions:访问的分区表信息。type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为:system > const > eq_ref > ref > range > index > ALL。system/const:表中只有一行数据匹配,此时根据索引查询一次就能找到对应的数据。如果是 B + 树索引,我们知道此时索引构造成了多个层级的树,当查询的索引在树的底层时,查询效率就越低。const 表示此时索引在第一层,只需访问一层便能得到数据。eq_ref:使用唯一索引扫描,常见于多表连接中使用主键和唯一索引作为关联条件。ref:非唯一索引扫描,还可见于唯一索引最左原则匹配扫描。range:索引范围扫描,比如,<,>,between 等操作。index:索引全表扫描,此时遍历整个索引树。ALL:表示全表扫描,需要遍历全表来找到对应的行。possible_keys:可能使用到的索引。key:实际使用到的索引。key_len:实际使用的索引的长度。ref:关联 id 等信息。rows:查找到记录所扫描的行数。filtered:查找到所需记录占总扫描记录数的比例。Extra:额外的信息。17.两个表join有什么需要注意的吗?你怎么判断哪个是主表呢?Left join可以和Right join做转换吗?18.你知道Join的时候,哪个作为主表会有什么影响吗?19.事务具有哪些性质?20.这几个性质是怎么保证的呢?21.以InnoDB为例,可以设置为行锁或者表锁吗?22.什么时候会表锁?23.幻读和可重复读的区别?24.Redis了解的怎么样?25.Redis存在事务吗?26.Redis中开启一个事务的命令你知道吗Multi:开启事务开启一个事务(相当于数据库事务中的begin trasication),总是返回OK。Exec (execute): 提交事务命令负责触发并执行事务中的所有命令(相当于数据库事务中的commit)Discard: 回滚事务回滚事务(相当于数据库事务中的rollback)。 当执行 DISCARD 命令时, 事务会被放弃, 事务队列会被清空, 并且客户端会从事务状态中退出。Watch:redis使用关键字实现乐观锁(check-and-set)。被 WATCH 的键会被监视,并会发觉这些键是否被改动过了。 如果有至少一个被监视的键在 EXEC 执行之前被修改了, 那么整个事务都会被取消, EXEC 返回nil-reply来表示事务已经失败。27.Redis的数据结构28.Zset底层的数据结构是怎么样的?压缩表ziplist跳表skiplist29.只有跳表吗?还有其他的吗?压缩表ziplist30.get一个key时间复杂度是多少?时间复杂度O(log(n)),n为当前成员个数31.Zset查询命令是S32.事务有个持久性,Redis的事务持久化怎么保证的?1、单独的隔离操作 事务中的所有命令都会序列化、按顺序执行,事务执行过程中不会被其他客户端发来的命令打断。2、没有隔离级别的概念 队列中的命令在没有被提交之前都不会被实际执行,事务提交前任何命令都不会被执行3、不保证原子性 队列中如果有一个命令执行失败,其他命令仍会被执行 不会回滚。33.你知道RDB和AOF的区别是什么吗?RDB:缺点是可能会丢失从上次快照到当前时间点之间未做快照的数据,默认5分钟AOF:默认为每秒钟 fsync一次,即将执行的命令保存到AOF文件当中,这样即使redis服务器发生故障最多只丢失1秒钟之内的数据34.AOF可以一分钟刷一次吗?可以一秒刷一次吗?AOF保存的时候,是同步还是异步的?aof 默认每秒执行一次记录,可能会丢失这1s 的数据,默认大小64mb.35.怎么异步执行的?被写入 AOF 文件的所有命令都是以 Redis 的命令请求协议格式保存的(Redis的请求协议是纯文本的)。36.过期是怎么做到的?Redis的源码Redis 通过一个保存在redisDb中的expires字典来保存数据过期的时间。过期键判定通过过期字典,程序可以用以下步骤检查一个给定键是否过期:检查给定键是否存在于过期字典:如果存在,那么取得键的过期时间。检查当前UNIX时间截是否大于键的过期时间:如果是的话,那么键已经过期;否则的话,键未过期。过期键删除策略如果假设你设置了一批 key 只能存活 1 分钟,那么 1 分钟后,Redis 是怎么对这批 key 进行删除的呢?常用的过期数据的删除策略就两个(重要!自己造缓存轮子的时候需要格外考虑的东西):定时删除:在设置键的过期时间的同时,创建一个定时器( timer ),让定时器在键的过期时间来临时,立即执行对键的删除操作。惰性删除 :只会在取出key的时候才对数据进行过期检查。这样对CPU最友好,但是可能会造成太多过期 key 没有被删除。定期删除 : 每隔一段时间抽取一批 key 执行删除过期key操作。并且,Redis 底层会通过限制删除操作执行的时长和频率来减少删除操作对CPU时间的影响。定时删除对内存友好,但对CPU最不友好。惰性删除对CPU更加友好。而定期删除是前两种的整合和折中,但是间隔时间不好控制,如果执行间隔太过频繁,就会变成定时删除,如果执行间隔较长,就会变成惰性删除。Redis 采用的是 定期删除+惰性/懒汉式删除 。但是,仅仅通过给 key 设置过期时间还是有问题的。因为还是可能存在定期删除和惰性删除漏掉了很多过期 key 的情况。这样就导致大量过期 key 堆积在内存里,然后就Out of memory了。怎么解决这个问题呢?答案就是: Redis 内存淘汰机制。37.你用过消息队列吗?38.你了解它的机制吗?39.操作系统你了解过吗?40.进程、线程和协程的区别一、进程进程是程序一次动态执行的过程,是程序运行的基本单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。进程占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、页表、文件句柄等)比较大,但相对比较稳定安全。协程切换和协程切换总结:保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。二、线程线程又叫做轻量级进程,是CPU调度的最小单位。线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。多个线程共享所属进程的资源,同时线程也拥有自己的专属资源。程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。总结:线程从属于进程,是程序的实际执行者。一个进程可以有多个线程,最少有一个线程,但一个线程只能有一个进程。三、协程协程是一种用户态的轻量级线程,协程的调度完全由用户控制。一个线程可以拥有多个协程,协程不是被操作系统内核所管理,而完全是由程序所控制。与其让操作系统调度,不如我自己来,这就是协程总结:协程最主要的作用是在单线程的条件下实现并发的效果,但实际上还是串行的(像yield一样)一个线程可以拥有多个协程,协程不是被操作系统内核所管理,而完全是由程序所控制。41.进程是怎么管理线程的?42.操作系统管理的时候是调度线程还是进程?调度包含了进程及线程,除此外还包括进程组。43.一段程序加载到内存当中,会有哪些东西分别放在哪里?有四个部分,分别是:代码段、数据段、栈、堆。代码段为源程序编译后的机器指令;数据段为程序中的全局或具永久生命期的数据;栈为函数调用使用的可变大小内存区;堆为程序中动态分配内存使用。44.虚拟机栈和堆有什么区别?45.你说垃圾清理大部分发生在堆里,那小部分是清理什么?方法区也是一种常见的垃圾清理区域,主要用于存储类的元数据信息、静态变量、常量等数据。Java虚拟机会根据不同的垃圾清理算法和收集策略,对这些内存区域进行定期或不定期的垃圾清理。46.Java new一个东西,放在堆里还是栈里?在Java中,通过关键字new创建的对象实例通常会被分配到Java堆内存中。47.它一定是在堆里面吗?Java中使用new关键字创建的对象一般都是在堆(heap)中分配内存空间的,但是也有一些例外。首先,如果对象的大小比较小,编译器可能会将它们分配在栈(stack)中,而不是在堆中。这种情况下,对象的生命周期受到限制,因为一旦离开了它们的作用域,它们就会被销毁。其次,Java中还有一些特殊的对象,如字符串常量(String literals)和基本类型的包装类(Wrapper classes),它们是由Java虚拟机在运行时从字符串常量池和永久代(permanent generation)中创建和管理的,而不是在堆中分配内存空间。因此,虽然大多数情况下Java中使用new关键字创建的对象都是在堆中分配内存空间的,但是也有一些例外需要注意。手撕
点赞 73
评论 12
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
07-14 12:23
OPPO_软件开发部_IT开发工程师(准入职员工)
OPPO内推
关于工作环境:base深圳前海 内部配置绝了。一整栋50层都是oppo哒,我的工位可以看到欢乐港湾和大海,零食柜自给,很感动的是每层都提供独立的隔音室,3层饭堂里,23楼是最好吃的 周边很繁华。楼下三层是大商场,午饭后我一般会和其他实习生姐妹去citywalk,好多奶茶店,茶救,奈雪 喜茶,瑞幸,奶白,煲珠公每天换着喝,好幸福 关于工作氛围 感受到相当年轻,相当扁平的氛围,我们组(销售运营部)有三个哥哥姐姐直接对接我,她们人真的很nice,笨笨的我不会时,问她们都会耐心解答~~ 于工作内容 感觉出入还是有的,问了哥哥姐姐,他们收到五六十份简历,面了6个,最后选了我,好感动好幸运。偏大客户运营方...
OPPO公司福利 630人发布
点赞
评论
收藏
分享
07-15 12:06
门头沟学院 前端工程师
大疆80分钟的测评?
有老哥知道大疆这个是性格测评+笔试题吗怎么一下子80min啊听说还有很多行测...
投递大疆等公司7个岗位
点赞
评论
收藏
分享
07-04 16:47
山东理工大学 营销
退伍后的迷茫
Lorn的意义:
你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞
评论
收藏
分享
07-01 16:05
河南师范大学 Java
唉,好累啊
双非大二快大三了。八股文还没开始背,我是写项目玩呢还是背着八股开始投着试试呢?暑假事也很多🖐🏻😭🖐🏻,勾八简历也是一坨,其实写的技术栈我只会在ai的帮助下会用和能看懂罢了
南宫生:
先背八股
点赞
评论
收藏
分享
07-15 20:06
海康威视_技术支持部_云存储开发工程师(准入职员工)
海康威视内推
工作体验,本人985,产品实习工作感受:部门氛围比较轻松,大家总是有说有笑,工作时偶尔闲聊开玩笑。和同事对接时,他们不会区别对待实习生,把你当做正式员工来交流和讨论项目,给你充分的尊重。总体来说,工作内容和职位描述相同。mentor布置任务时也会给你留充分的时间去做,并且告诉你不用着急慢慢做,但是会让你预估完成时间,不会的问题也有问必答。 工作时间:上午9:30-12:00 下午13:30-18:00 快下班的时候同事就不会和你讨论工作或交代任务了,实习生基本上准时下班,很贴心。但是正式员工忙起来平均0点下班。 实习成果 第一次做产品方向的实习,还是有学到一些干货的,但更多地是自己下班看书钻研...
海康威视公司氛围 515人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
0实习0面试, 速通拼多多
1.4W
2
...
秋招腾讯TEG提前批(三面挂)
1.3W
3
...
玛勒戈壁得秋天到了吗就秋招。恨不得搁产房外面招聘
7211
4
...
我和妈妈讲以后我可能给不了她一个月1500
7010
5
...
后端实习到底该干什么啊
5486
6
...
双非本应届是如何拿到30
4607
7
...
王侯将相宁有种乎!
4229
8
...
明天五场面试,加油
4183
9
...
从外包到正式工,从Java开发到私有云运维:我的职场逆袭之路
3855
10
...
实习,别太较真
3498
创作者周榜
更多
正在热议
更多
#
你被哪些公司秒挂过?
#
26777次浏览
225人参与
#
打工人的工作餐日常
#
50421次浏览
385人参与
#
如何提高实习转正率?
#
10149次浏览
151人参与
#
26届的你们有几段实习?
#
35309次浏览
399人参与
#
月薪多少能在一线城市生存
#
18210次浏览
243人参与
#
你后悔自己读研吗?
#
14476次浏览
216人参与
#
你认为哪些项目算烂大街?
#
14235次浏览
256人参与
#
你以为的实习VS真实的实习
#
20055次浏览
186人参与
#
追觅科技求职进展汇总
#
17329次浏览
119人参与
#
哪些公司真双非友好?
#
14512次浏览
80人参与
#
双非能在秋招上岸吗?
#
220220次浏览
1165人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
116449次浏览
804人参与
#
你觉得技术面多长时间合理?
#
98309次浏览
712人参与
#
非技术2023笔面经
#
247951次浏览
2410人参与
#
最难的技术面是哪家公司?
#
7908次浏览
68人参与
#
机械校招之路总结
#
93143次浏览
1891人参与
#
找工作时的取与舍
#
82125次浏览
587人参与
#
网申一定要掌握的小技巧
#
10338次浏览
66人参与
#
拼多多求职进展汇总
#
648859次浏览
5187人参与
#
海康威视求职进展汇总
#
489197次浏览
3619人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务