快手20230807提前批一面

2023-10-26

Q and A

面试官:你是专硕还是学硕,能不能让实习?研究方向?

面试官:项目基于什么背景做的?
xxx

面试官:介绍一下框架。
xxxx

面试官:里面中用了什么技术
首先的话,服务层使用了springboot,并且使用了mp,持久化使用了mysql数据库,执行层在占据任务的时候,考虑到多个执行层会完成任务的抢占,使用了redis作为分布式锁,在占据完任务后,使用了线程池完成任务的处理。

面试官:框架如何使用?
xxxx

面试官:你考虑引入了mq和分表优化,引入消息队列是做什么用的?
引入消息队列主要就是将执行层中占据任务和执行任务这两个操作进行解耦,
具体而言就是将拉取的任务都丢进到消息队列里,分发到worker中,worker自己执行自己的任务。

面试官:Java基础知识,平时用的都是java对吧?java中有HashMap,简单介绍一些结构吧?
HashMap的话1.7之前使用的数组+链表进行实现,出现Hash冲突的时候使用头插法,但是头插法容易出现链表成环的问题,以及使用链表进行查找的时候,时间复杂度为O(n)的,因此在jdk1.8的时候,使用了数组链表+红黑树来实现,同时将链表中的头插法更改为尾插法,解决链表成环的问题。红黑树的引入主要就是当链表中的元素超过8的时候,并且数组大小超过64的时候会将链表树化。以上就是我的理解。

面试官:数组链表放在哪个位置上?(主要考察的就是put过程)
首先计算Key的hashCode与高16位右移异或值,然后会判断是否完成初始化,如果没有的话,则初始化,接下来使用了与运算替换了hash模数组大小,(主要的原因就是计算的速度快,以及使得散列表更散列),找到对应的位置,如果为空,则插入,如果不为空,判断当前的值是否与之前的hashCode值相同,相同则替换,否则判断通的节点类型是否为红黑树,如果是的话完成替换或者插入,如果不是红黑树的话,向链表进行插入。后续可能会判断是否需要扩容!

面试官:HashMap是线程安全的么?
不是线程安全的,主要就是在多线程操作的时候,会出现数据的覆盖或者丢失。主要的替换方案就是ConcurrentHashMap

面试官:ConcurrentHashMap如何保证线程安全的呢?
这个的话,在jdk1.7前使用的分段锁来实现的,具体而言就是使用了一个Segment数组,数组大小默认为16个,每个桶中使用ReentrantLock进行加锁和解锁。也就是多线程在操作同一个桶的时候,会进行加锁,其他线程处于自旋或者阻塞的状态。这个存在一个问题,就是并发的个数会受到数组的大小的影响。
而在Jdk1.8的时候使用了数组链表红黑树,对于每个数组bin的话,他使用了cas和synchronzied进行加锁。具体而言就是先判断插入到哪个位置,使用cas进行加锁,加锁失败可能出现这个扩容,再插入的时候使用sychronzied进行插入和覆盖。然后先判断当前节点是否为链表,完成插入或者覆盖的操作,如果非链表的话,即为红黑树,则完成这个数据的插入和覆盖。

面试官:线程池了解过么?我们在java里面创建一个线程池都需要指定哪些参数?
7个参数:核心,最大线程数量,存活时间,单位,阻塞队列,线程工厂,拒绝策略(DiscardOlddestPolicy)。

面试官:每个参数有什么用?
可以从一个例子来讲么?我自己编了一个小例子。
这个核心线程数量就相当于前锋,来任务了,我就先处理。
阻塞队列相当于中锋,不处理任务,存任务。
最大线程数量相当于后卫,前锋不够,后卫来补。
拒绝策略相当于守门员,都不行,我就要拒绝了
线程工厂相当于球员工厂,创建球员的。
存活时间相当于前锋+后卫空闲的时候,什么时候休息。
单位的话就是隔多久休息。

面试官:为什么是先放到队列里,而非创建线程去处理?
队列的话,我觉得相当于缓存吧?如果每来个任务,我就需要创建线程,这样性能肯定受到损失,充分的利用Cpu。

面试官:线程有几种状态。
6种状态:创建,执行,终止,阻塞,等待,超时等待。

面试官:线程池的问题,如果线程池当前处于空闲的状态,核心线程数量是不会被销毁的,那这几个核心线程处于什么状态?为什么处于这个状态?
当线程池处于空闲状态时,核心线程数量是不会被销毁的。这些核心线程通常处于等待(Waiting)或阻塞(Blocked)状态,特别是它们在等待新任务的到来。

面试官:讲一下JVM内存的结构,哪些是共享的,哪些是线程不共享的?
堆、栈、方法区、程序计数器、本地方法栈。共享的有堆,方法区。不共享的是本地方法栈,栈,程序计数器。

面试官:了解过垃圾回收相关的么?垃圾回收算法看过么?
标记清除,标记整理,标记复制,分代收集算法。

面试官:如何判断一个对象是否能回收?
引用计数法,可达性分析算法。
引用计数法存在循环引用问题,就是A引用B,B引用A。这样AB都不会回收。

面试官:GC ROOT都有什么?
Static Final修饰的对象,以及线程,栈中的对象引用。

面试官:数据库比较熟悉mysql吧?简单介绍一些索引的结构。(存在问题,需要再看看)
使用b+树构建索引,如果是聚簇索引的话,叶子结点存储的是一行所有的信息,如果非聚簇的话,存储的是聚簇索引+非聚簇的?节点与节点通过链表进行连接,因此可以支持范围查询。

面试官:数据存储在叶子结点有什么好处?(存在问题)
主要的好处就是通过非叶子结点能够定位到叶子结点,速度快,并且避免频繁的回表,

面试官:b树存储在所有的结点上,如果存在查询的数据都在第一层,而b+树存储在叶子结点那层。
这只是个例外,有其他的情况,如果出现其他情况,每次都是一次IO

面试官:提到了聚簇索引?他是什么样的?非聚簇索引(存在问题)
根据主键构建的索引

面试官:联合索引,比方有好几个列建立的索引,为何需要遵循最左匹配规则?(存在问题)
主要的原因就是能

面试官:给你几个sql题,比方说有个表,对a,b,c建立索引(明天看看)
1.select a,b, from tb where a=1 and b=2
2.select b,c,a from tb where a=1 and b=2 and c=2
3.select b,c from tb where b=1 and c=2 回答错了
4.select b,c from tb where a>2 and b=3 回答错了

面试官:看你了解过redis?会给redis的key设置一个过期时间,如果过期了,如果处理这个对象?
会有删除策略:定时删除,定期删除,惰性删除。

面试官:写个算法题,二叉树的右侧视图。
一开始想前中后遍历,后来使用层序遍历获取,根据层序遍历写了出来。

感悟:相较于暑期实习面试算法写不出来,有一些提升,继续努力

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快手20230807提前批一面 的相关文章

  • 2024备战春招Java面试八股文合集

    Java就业大环境仍然根基稳定 市场上有很多机会 技术好的人前景就好 就看你有多大本事了 小编得到了一份很不错的资源 建议大家可以认真地来看看以下的资料 来提升一下自己的核心竞争力 在面试中轻松应对面试官拿下offer 本文分享 Java后
  • 面试了10几家软件公司测试岗位,做的面试题大盘点,重点大合集

    马上就是金三银四了 不知道小伙伴们有没有准备好呢 希望这篇文章的内容可以帮助到大家 另外文末给大家准备了资料 好几套面试题加学习资料等 需要自取 项目的测试流程 1 拿到需求文档后 写测试用例 2 审核测试用例 3 等待开发包 4 部署测试
  • Java实现订单超时未支付自动取消的8种方法总结

    Java实现订单超时未支付自动取消的8种方法总结 定时轮询 数据库定时轮询方式 实现思路比较简单 启动一个定时任务 每隔一定时间扫描订单表 查询到超时订单就取消 优点 实现简单 缺点 轮询时间间隔不好确定 占用服务器资源 影响数据库性能 惰
  • 年前去面了 6 家大厂,拿下 5 家 offer,进大厂好像也没有那么难吧......

    前言 十一月份的时候因为换工作的缘故 陆续参加了华为 阿里巴巴 字节跳动 拼多多 百度 Paypal 的社招面试 除了字节跳动流程较长 我主动结束面试以外 其他的都顺利拿到了 Offer 最近时间稍微宽裕点了 写个面经 希望对大家找工作有所
  • 【分布式算法】Gossip协议详解

    一 为什么需要 Gossip 协议 为了实现 BASE 理论中的 最终一致性原则 两阶段提交协议和 Raft 算法需要满足 大多数服务节点正常运行 原则 如果希望系统在少数服务节点正常运行的情况下 仍能对外提供稳定服务 这时就需要实现最终一
  • 为什么要编写测试用例,测试用例写给谁看?

    为什么要编写测试用例 测试用例写给谁看 这个问题看似简单 但却涵盖了一系列复杂的考虑因素 并不太好回答 为了向各位学测试的同学们解释清楚 为什么编写测试用例是至关重要的 我将通过以下5个方面进行展开 1 为什么要写测试用例 2 测试用例写给
  • 自动化测试面试题(附答案)

    1 自动化代码中 用到了哪些设计模式 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2 什么是断言 Assert 断言Assert用于在代码中验证实际结果是不是符合预期结果 如果测试用例执行失败会抛出异常并提供断
  • 外包干了2个月,技术退步明显了...

    先说一下自己的情况 大专生 19年通过校招进入湖南某软件公司 干了接近4年的功能测试 今年8月份 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • 14:00面试,14:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K

    我认为对于面试以及进阶最佳的学习方法莫过于 刷题 博客 书籍 总结 前三者我将淋漓尽致地挥毫于这篇文章中 至于总结要靠个人 实际上越到后面你越会发现面试并不难 其次就是在刷题的过程中有没有去思考 刷题只是次之 这又是一个层次了 这里暂时不提
  • Java面试资料合集(24年目前最全整理面试跳槽必备)

    有了他们闭着眼睛也能找到工作 这段时间不是正好到了金三银四的季节了嘛 我司前段时间在整体环境不是很景气的大前提下也是招到了很多的开发小伙伴 听到开发组的组长说这批进来的一些新人还算是很优秀的 本来我心里的小算盘是 这样后面再给他们提一些需求
  • 真的干不过,00后整顿职场已经给我卷麻了,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 2024年最热门的15个科技工作岗位

    1 系统安全管理员 系统安全管理员的任务是确保公司的网络 数据和系统免受网络安全威胁 方法是确保有适当的安全战略并保持最新的合规性和策略 要求 应聘者应具有网络安全职位的工作经验 并对合规性和安全协议的最佳实践有坚实的基础 这个职位通常需要
  • 【面试】 前端竞争压力大?揭秘让你们学后端的真实动机!

    前端开发属于程序员吗 网友是这样回答的 看完前端同学的评论 我悟了 你们让人都去学后端卷 然后减小前端竞争压力是吧 哈哈哈 你们这帮老6 于是我去拿出了我收藏的 某前端招聘JD来盘一盘 那些觉得 是个人都能干前端 的同学们想必已经熟练掌握了
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • 基于Loadrunner的性能分析及调优经验分享

    公司某个系统的微信端计划将开放给几百上千的人员登录查询 并且登录账号为同一账号多人使用 后台服务能够支撑起多用户的并发操作以及成百上千人登录微信端对生产数据库或者登录查询的性能效率高成为交付可靠生产环境的必要条件 因此 项目组决定提交测试
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 最新整理Java面试八股文,大厂必备神器

    在此 我采访了数十名大厂的面试官和上百的的面试者 总结出了这一套Java面试八股文 这套八股文已经帮助了上百人拿到自己心仪的offer 我们先来看看这套八股文 Java基础面试八股文 操作系统中 heap 和 stack 的区别 什么是基于
  • 面试官:分库分表后如何生成全局ID?

    分库分表后就不能使用自增 ID 来作为表的主键了 因为数据库自增 ID 只适用于单机环境 但如果是分布式环境 是将数据库进行分库 分表或数据库分片等操作时 那么数据库自增 ID 就会生成重复 ID 从而导致业务查询上的问题 所以此时 可以使
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋

随机推荐

  • 算法(C)(两数之和)

    题目 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不
  • JSON使用的一些总结

    http sx666 blogspot com 2007 11 json html JSON JavaScript Object Notation 是一种轻量级的数据交换格式 它采用完全独立于语言的文本格式 可以用来在客户端和服务器端传输数
  • innerText和innerHTML区别

    innerText和innerHTML区别 尽管DOM带来了动态修改文档的能力 但对开发人员来说 这还不够 IE4 0为所有的元素引入了两个特性 以更方便的进行文档操作 这两个特性是innerText和innerHTML 其中innerTe
  • Oracle:重复数据去重,只取其中一条(最新时间/其他字段排序规则)数据

    一 问题 一个会话id代表一个聊天室 返回该聊天室最新的一条数据显示在会话列表 二 解决思路 使用row number over 分组排序功能 来解决该问题 1 语法格式 row number over partition by 分组列 o
  • TMOD、SCON、PCON寄存器的配置

    TMOD控制寄存器 TMOD是定时器 计数器模式控制寄存器 它是一个逐位定义的8为寄存器 但只能使用字节寻址 其各位是 由上图我们就可以看出 这个寄存器控制了两个定时器 计数器 寄存器的高四位控制定时器1 低四位控制定时器0 GATE 门控
  • 数据分析毕业设计 二手房数据爬取与分析可视化系统 -python

    1 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到毕业答辩的要求 这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求 为了大家能够顺利以及最少的精力通过毕设 学长分享优质毕业设计项
  • Air700E开发板

    文章目录 基础资料 概述 主要功能 外设分布 PinOut 管脚定义 管脚功能说明 固件升级 正常开机模式 下载模式 IO 电平选择 基础资料 Air700E文档中心 概述 EVB Air700E 开发板是合宙通信推出的基于 Air700E
  • 去除VsCode代码前面的小点点

    去除VsCode代码前面的小点点 去除图片中的点 步骤 File gt Preferences gt Setting 搜索RenderWhitespace 将Text Editor下的Editor Render Whitespace改为no
  • peewee-async使用描述

    1 peewee async是一个为peewee ORM 提供由asyncio支持的异步io库 在单独使用peewee连接池连接时 同时使用到了async和await协程 这样操作会阻塞整个进程 因为tornado是单进程 必须数据库也使用
  • 数据库的简介与类型 #CSDN博文精选# #IT技术# #数据库#

    大家好 小C将继续与你们见面 带来精选的CSDN博文 又到周一啦 上周的系统化学习专栏已经结束 我们总共一起学习了20篇文章 这周将开启全新专栏 放假不停学 全栈工程师养成记 在这里 你将收获 将系统化学习理论运用于实践 系统学习IT技术
  • 高通 AR Unity 虚拟按钮

    1 虚拟按钮是图像上的目标 用户可以在现实世界中触摸 以触发一个动作的 热点 现有的图像目标的一个实例的VirtualButton预制拖动到场景中添加虚拟按键 平移和缩放按钮 以匹配所需的位置 并给它一个名字 虚拟的按钮添加这样写入到con
  • 计算机视觉概述

    关注公众号 CV算法恩仇录 本文介绍了计算机视觉的主要任务及应用 全文大约 3500 字 阅读时间 10 分钟 人们或许没有意识到自己的视觉系统是如此的强大 婴儿在出生几个小时后能识别出母亲的容貌 在大雾的天气 学生看见朦胧的身体形态 能辨
  • v-viewer 插件图片点击放大预览的几种使用方法

    官网git地址 https github com mirari v viewer 最终效果如下 ps 按钮样式都是可以根据自己需求调整的 第一种使用方法 支持UMD用法 建议把v viewer相关的js和css文件下载到本地引用 可以到上面
  • set容器、map容器

    set multiset 容器 set基本概念 简介 所有元素都会在插入时自动被排序 本质 set multiset属于关联式容器 底层结构是用二叉树实现 set和multiset区别 set不允许容器中有重复的元素 multiset允许容
  • elk笔记23--定期清理索引

    elk笔记23 定期清理索引 1 介绍 2 方案 代码 2 1 方案介绍 2 2 代码 2 3 测试 3 注意事项 4 说明 1 介绍 在生产环境中 如果日志量过大 就会导致集群持续产生很多索引 占用很多存储空间 因此需要定期清理索引 确保
  • 套圈·分治

    套圈 题目信息 输入 测试样例 解答 想法 题目信息 Have you ever played quoit in a playground Quoit is a game in which flat rings are pitched at
  • 闭环步进与伺服电机差异

    当给步进电机配备编码器闭环控制后 从广义上来看 闭环步进电机和伺服电机两者是没有什么大的区别 但是 要详细区分闭环步进电机和伺服电机的不同之处 你需要先了解一下伺服电机和步进电机的差异 闭环步进电机是在步进电机上加装了高精度的编码器 用伺服
  • 理解扩散模型:Diffusion Models & DDPM

    引言 在前面的博客中 我们讨论了生成模型VAE和GAN 近年来 新的生成模型 扩散模型受到越来越多的关注 因此值得好好去研究一番 扩散模型 Diffusion Models 最早由 2 于2015年提出 但直到2020年论文 3 发表之后才
  • 不断发展中的自然语言处理技术,会在未来消灭“笔”和“键盘”吗?

    花满楼 发布于2014 07 20 23 11 00 目前 Siri 和 Google Now 的语音识别技术虽然还不完善 但在未来却很可能威胁到文字的地位 我们手写或者打字 在当下已经成为了无比繁重的劳动 不断的输入各种文字信息 在网页上
  • 快手20230807提前批一面

    Q and A 面试官 你是专硕还是学硕 能不能让实习 研究方向 面试官 项目基于什么背景做的 xxx 面试官 介绍一下框架 xxxx 面试官 里面中用了什么技术 首先的话 服务层使用了springboot 并且使用了mp 持久化使用了my
Powered by Hwhale