面试技巧
文章平均质量分 70
威哥爱编程(马剑威)
华为开发者专家(HDE)、CSDN博客专家、阿里云开发者社区专家博主、Java畅销书作者、TiDB开发者官方认证讲师。百科:https://baike.baidu.com/item/马剑威/59826318 ,公众号:威哥爱编程
展开
-
15分钟面试被5连CALL,你扛得住么?
最近一个朋友跳槽找工作,跟V 哥说被15分钟内一个问题5连 CALL,还好是自己比较熟悉的技术点,面试官最后跟他说,面了几十个人,你是第一个回答比较满意的,我好奇都是什么问题,原来是关于锁的问题连环问,整理出来给需要的兄弟们参考。原创 2024-06-14 10:28:48 · 756 阅读 · 0 评论 -
MySQL 的可重复读怎么实现的?
通过这些机制的组合,MySQL的InnoDB存储引擎能够在可重复读隔离级别下提供稳定的数据视图,确保事务的一致性和隔离性。然而,这种隔离级别虽然提供了很好的数据一致性保证,但也可能引起性能问题,如锁的竞争和死锁。因此,在实际应用中需要根据业务需求和性能考虑来选择合适的隔离级别。原创 2024-06-14 10:26:33 · 543 阅读 · 0 评论 -
分布式CAP、BASE理论务必了解一下
分布式系统理论是计算机科学中的一个重要分支,它关注如何设计和实现能够跨多个物理或逻辑位置运行的系统。在分布式系统中,CAP定理和BASE理论是两个非常著名的理论,它们分别描述了分布式系统设计中的一些基本约束和原则。原创 2024-06-11 11:55:26 · 368 阅读 · 0 评论 -
Redis 分布式锁过期了,还没处理完怎么办?
为了防止死锁,我们会给分布式锁加一个过期时间,但是万一这个时间到了,我们业务逻辑还没处理完,怎么办?这是一个分布式应用里很常见到的需求,关于这个问题,有经验的程序员会怎么处理呢,今天的文章,V 哥来详细说一说,把这个问题彻底讲清楚。开干!首先,我们在设置过期时间时要结合业务场景去考虑,尽量设置一个比较合理的值,就是理论上正常处理的话,在这个过期时间内是一定能处理完毕的。之后,我们再来考虑对这个问题进行兜底设计。:额外起一个线程,定期检查线程是否还持有锁,如果有则延长过期时间。原创 2024-06-11 11:45:53 · 1323 阅读 · 0 评论 -
【面试】Spring 的 AOP 是怎么实现的?
对于更复杂的需求,比如字段级别的拦截或者构造器调用的拦截,Spring AOP可能无法满足,这种情况下可以考虑使用AspectJ,它提供了更全面的AOP实现。JDK动态代理利用反射机制在运行时动态创建一个实现了目标对象接口的代理类,然后在代理类中对方法进行增强(即插入横切逻辑)。CGLIB通过底层的字节码技术为一个类创建子类,并在子类中覆盖非final的方法,以实现方法拦截和增强。在使用注解配置时,通常会在切面类上使用@Aspect注解来标记,然后在方法上使用不同的注解来标记通知的类型和切入点。原创 2024-06-07 16:09:52 · 221 阅读 · 0 评论 -
Spring 的事务隔离级别是如何做到和数据库不一致的?
Spring框架的事务管理是基于Java的,而数据库的事务隔离级别是由数据库系统本身实现的。这种设计允许开发者在应用程序中定义事务行为,而无需直接依赖于特定的数据库系统。然而,由于不同的数据库系统可能支持不同的隔离级别,或者对隔离级别的实现有所差异,因此Spring设置的隔离级别可能与数据库实际支持的隔离级别存在差异。例如,某些数据库可能不支持SERIALIZABLE隔离级别,或者对REPEATABLE_READ的实现有所不同,这时Spring会在数据库支持的最大隔离级别上尽可能提供接近的隔离保证。原创 2024-06-07 16:05:52 · 542 阅读 · 0 评论 -
Java程序员人事面常见问题汇总及参考:第四弹
建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等等,回答的答案最好是积极正面的。每个人的价值观不同,自然评断的标准也会不同,但是,在回答面试官这个问题时可不能太直接就把自己心理的话说出来,尤其是薪资方面的问题,不过一些无伤大雅的回答是不错的考虑,如交通方便,工作性质及内容颇能符合自己的兴趣等等都是不错的答案,不过如果这时自己能仔细思考出这份工作的与众不同之处,相信在面试上会大大加分。原创 2022-12-20 15:57:27 · 408 阅读 · 0 评论 -
Java程序员人事面常见问题汇总及参考:第三弹
② 企业很想知道未来的员工能为企业做什么,求职者应再次重复自己的优势,然后说:“就我的能力,我可以做一个优秀的员工在组织中发挥能力,给组织带来高效率和更多的收益”。企业喜欢求职者就申请的职位表明自己的能力,比如申请营销之类的职位,可以说:“我可以开发大量的新客户,同时,对老客户做更全面周到的服务,开发老客户的新需求和消费。回答提示:这是想知道面试者对这份工作的热忱及理解度,并筛选因一时兴起而来应试的人,如果是无经验者,可以强调“就算职种不同,也希望有机会发挥之前的经验”。原创 2022-12-20 15:54:26 · 1113 阅读 · 0 评论 -
Java程序员人事面常见问题汇总及参考:第二弹
②分清责任,各负其责,如果是我的责任,我甘愿受罚;③总结经验教训,一个人的一生不可能不犯错误,重要的是能从自己的或者是别人的错误中吸取经验教训,并在今后的工作中避免发生同类的错误。②你觉得这个职业可有可无,那还是趁早换个职业,去发现适合自己的,选择热爱的职业,那么你的发展前途也会大点,对单位和个人都有好处。回答提示:我首先不会找那位上级领导说明这件事,我会主动找我的主管领导来沟通,因为沟通是解决人际关系的最好办法,但结果会有两种:①我的主管领导认识到自己的错误,我想我会视具体情况决定是否原谅他。原创 2022-12-20 15:52:28 · 904 阅读 · 0 评论 -
Java程序员人事面常见问题汇总及参考:第一弹
当然,说出其他一些你感兴趣的职位也是可以的,比如项目经理,一级主管等一些与你的专业有相关背景的工作。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。原创 2022-12-20 15:48:30 · 635 阅读 · 0 评论 -
Java面试必问|数据库行列转换查询,你知道吗?
一. 前言不知道小伙伴们发现没有,但凡面试后端开发,数据库的查询都是必问的!更有甚者,面试官会直接让我们在答题纸上手写SQL代码。其中数据库表的行列转换查询,就是很常考察的一道题目!接下来索尔老师就来给大家解析一下数据库行列转换查询的实现过程,希望能够帮到你。二. 行转列需求展示我们先来看看MySQL实现行转列查询的一个需求。索尔老师先给大家展示一下效果图,按行查询的结果如下图所示:行转列后查询的结果如下图所示:三. 代码实现接下来索尔就直接给大家展示这个需求的代码实现吧。此处用到max函数,这主要是原创 2022-12-07 15:13:57 · 732 阅读 · 0 评论 -
开发中如何克服tomcat热部署弱的缺陷?看这篇文章就够了
但在引入Maven进行管理项目后,很多学员在开发时依然会延用原有的开发习惯,也就是会继续给Web项目安装使用本地的tomcat,并配置发布环境。如果初次使用maven的tomcat插件做JavaWeb开发,那么maven本地仓库中应该是没有tomcat插件依赖包的,所以此时需要到maven中央仓库中先下载tomcat插件的依赖。选择并复制依赖包文本,加入pom.xml依赖区域,更新项目的maven依赖,会下载tomcat7-maven-plugs依赖到本地仓库。原创 2022-11-01 11:05:36 · 316 阅读 · 0 评论 -
前端面试题:如何在TS中对函数的返回值进行类型约束?
函数返回值为underfinde,仅仅时为了在内部实现某个功能,我们就可以给他一个类型注解void,代表没有任何返回值,函数的参数可能是一个,也可能是多个,有可能是一个变量,一个对象,一个函数,一个数组等等。当函数有返回值时,根据返回值的类型在相应的函数位置进行静态类型定义即可。1.函数的参数为单个或多个单一变量的类型定义。2.函数的参数为数组的类型定义。3.函数的参数为对象的类型定义。4.函数的参数为函数的类型定义。原创 2022-10-20 14:53:20 · 2165 阅读 · 0 评论 -
高频面试题:服务器CPU占用过高怎么办?搞定只需简单7步
jstack命令能够打印出当前所有java栈中的线程信息,其中必然包括出问题的线程。剩下我们要做的就是根据线程的id,找到这个线程正在执行的方法即可。这里71289是十进制整数,而jstack日志中的线程id是十六进制,因此需要做以下转换。本案例中的pid是71289,那么接下来距离找出出问题 的方法已经不远了。在Java开发岗位的面试中,时不时会出现一些运维类的题目,其实这也反映了后端面试的一种趋势。这是一道比较常见的线上排错问题,接下来就让我们我们来分析一下这个问题的解决过程吧。原创 2022-10-20 11:12:20 · 3348 阅读 · 1 评论 -
高频面试题:谈谈你对MySQL索引的了解,读完让你少走90%的弯路
索引的最左匹配特性(即从左往右匹配),比如(name,age,sex)的时候,b+树是按照从左到右的顺序来建立搜索树的。假如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name,来确定下一步的搜索方向。但当(20,F)这样没有name的数据进来的时候,b+树就不知道下一步该查哪个节点了。IO次数取决于b+数的高度h,假设当前数据表的数据为N,每个磁盘块数据项的数量是m,则有h=㏒(m+1)N;m = 磁盘块的大小 / 数据项的大小,磁盘块的大小也就是一个数据页的大小,是固定的;原创 2022-10-20 11:10:55 · 345 阅读 · 0 评论 -
核酸检测引发的思考,关于redis缓存穿透、击穿和雪崩的理解和解决方案
尤其是在秒杀、大促的情况下,并发请求量过大,而key刚好又过期,缓存key对应的key值,计算又比较复杂,重新缓存到数据库也需要一段时间,这时就可能会压垮后端数据库。对于缓存穿透,可以将查询的数据条件都哈希到一个足够大的布隆过滤器中,用户发送的请求会先被布隆过滤器拦截,一定不存在的数据就直接拦截返回了,从而避免下一步对数据库的压力。如果某个核酸点没有核酸检测物料,比如试管,可以在第一次问询防疫中心,如果都没有的情况下,就会在这个核酸点贴出公告,告知做核酸的人员,这样后面排队的人就不用苦苦等待了。原创 2022-09-22 14:52:36 · 842 阅读 · 0 评论 -
面试题精讲:你所不知道的Lambda表达式和常用的函数式接口
如果⼀个⽅法的参数和返回值全都是 Consumer 类型,那么就可以实现效果:消费数据的时候,⾸先做⼀个操作, 然后再做另⼀个操作,实现组合。java.util.function.Function接⼝⽤来根据⼀个类型的数据得到另⼀个类型的数据,前者称为前置条件,后者称为后置条件。⽆论是JDK内置的Runnable 、 Comparator 接⼝还是⾃定义的接⼝,只有当接⼝中的抽象⽅法存在且唯⼀时,才可以使⽤Lambda。Function接⼝中有⼀个默认的andThen⽅法,⽤来进⾏组合操作。原创 2022-09-22 14:51:04 · 929 阅读 · 1 评论 -
临门一脚踢不进?面试官就是不要我?程序员面试隐藏加分项你做对了吗?!
因为面试官把人招来之后,大家是要做同事的,可能会做好多年的同事,天天面对一个没劲的技术高手,还不如找个有意思的一般的,稍微培养培养也不是完成不了任务。之前我有个学生去某想集团的某个项目组去面试,那个面试官明显技术不行,问的技术问题都是很low的问题,然后我这个学生回答的非常棒,但结果最后HR跟这个学生反馈,说技术没有通过!现在的社会竞争激烈,很多行业对我们的要求都是保持时刻学习的状态,尤其是计算机行业,更是一个需要经常学习、经常更新自己的行业,这一行肯定不是铁饭碗,如果你就想一劳永逸,请慎入!原创 2022-09-16 17:34:33 · 352 阅读 · 0 评论 -
简历石沉大海?面试杳无音讯?程序员面试的真相究竟是什么?!
前言在昨天的文章中,我简单地给大家罗列了与面试相关的十个关键因素,当然同学们也知道面试成功的因素不止这些,而关键因素里面也有优先级,所以今天壹哥先给大家拆解一下前面几个比较重要的关键因素。1. 简历本身我们求职的第一步,肯定是参加面试,而面试的前提,是有公司的HR来邀请你参加面试,如果你连面试机会都没有,何来的offer?何来的工作?说难听点,只要面试机会足够多,基本上就能找到工作,瞎猫还能碰见死耗子,所以面试的机会越多,成功的可能性就越大!那么到底哪个因素会影响到你的面试机会多不多呢?其中简历本身写得好不原创 2022-09-16 17:32:48 · 125 阅读 · 0 评论 -
不能错过的“精”验丨从上千名高薪程序员总结出的面试成功因素总结!
无论你学的是Java,还是HTML5、Python、.Net、C++,还是运维、测试、产品,或者是其他行业,只要你想从事某项工作,在获取这个职位之前,基本上都会经历面试这个过程。就从这1000多名学员和自己的面试经历中,总结出来一些非常实用的面试经验,并结合几个经典的面试案例,给即将求职的你分析如何才能更快更好地通过面试,拿到offer。在面试的时候,你会发现有的人就是“面霸”,几乎可以做到面一家成一家,也有的人却是“面渣”,面一家散一家。为什么有的人面试成功率很高,有的人面试失败率很低呢?原创 2022-09-16 17:17:52 · 125 阅读 · 0 评论 -
高频面试题 | RabbitMQ如何防止重复消费?
利用redis的setnx命令,将消费的消息id存入到redis,超时时间设置为10秒,然后再给mq返回ack。返回回调执行结果的过程中,因为网络抖动等原因,回调数据时,MQ没有返回成功,所以MQ队列中的数据会再次发给业务项目,造成重复消费。因为消费方和MQ服务器网络闪断等原因,造成了接收方消费后,返回给MQ服务器一个ack确认消息,结果MQ没有接收到,造成了重复消费。利用redis的setnx命令,以消息唯一id为key,以消息内容为value,超时时间设置为10秒,存入redis中;原创 2022-09-09 14:41:53 · 915 阅读 · 0 评论 -
Java面试连击发问:Http是短连接还是长连接该怎么回答?
当读写操作完成后,双方不再需要这个连接时,它们就可以释放这个连接,而连接的建立是需要进行3次握手的,释放则需要进行4次挥手,所以每个连接的建立都是需要消耗资源和时间的。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立好的连接。HTTP虽然是一个无状态的面向连接的协议,但无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。...原创 2022-09-01 17:05:59 · 324 阅读 · 0 评论 -
Java面试:MySQL间隙锁是什么鬼?
出现上面两图结果的原因在于,因为 foo表中的数据id为1、4、7、9、15、18,当查询id在(5,10)之间的时候,锁的并不是整个数据库表,而是查找离下限(5)最大的id值和上限(10)最小的id值,分别为4和15;",我脑子中迅速提取各种锁:"悲观锁"、"乐观锁"、"行锁"、"表锁"、"悲观锁"、"乐观锁"......阿xi吧,间隙锁是个什么鬼?笔者再用一个可能不是很贴切但比较好理解的例子来给大家说明,就是事务或者查询开始的时候,针对要查询的数据生成一些副本,然后在后续的查询中获取的是该副本的数据。.原创 2022-09-01 16:57:02 · 799 阅读 · 1 评论 -
面试基本功之quartz定时组件的简单使用
因为我们的任务调度触发器可能需要多个,也就是可能会有多个任务需要调度,这就是我们使用List指定触发器的原因。最近有毕业学员问文哥,说在面试的时候,被问到了定时组件的使用,这位学员一脸懵逼,他竟然不知道实现定时组件的技术有哪些。今天我们基于原生的SSM环境来实现quartz定时组件的开发,虽然XML的配置方式比较繁琐,但配置思路却比较清晰,让人一看就一目了然,对新手而言易于理解。当然我们大可不必学习所有的定时组件,只需要根据公司的实际情况,学习某一个定时组件的基本功能,根据业务合理运用,实现相关功能即可。原创 2022-08-19 16:01:25 · 1269 阅读 · 0 评论 -
新手福利IDEA安装、配置及使用教程
最近建哥在带新班的过程中,发现IDEA的安装对于很多准备开启JAVA学习之旅的学员,特别是之前没有软件安装经验的同学来说并不是一件很轻松的事情。为了后期能更好地使用IDEA进行编码,我们在软件安装完成后还需要对它进行一些个性化的配置,因配置项太多且考虑到有些配置前期用不上,建哥这里主要针对初学者列举一些常用的设置。如果我们想要安装IDEA,首先就需要获取到它的安装包,建哥这里要特别提醒一下各位初学者,我们应该养成尊重知识产权的意识,请从正规渠道的官网去下载对应的软件安装文件。原创 2022-08-19 15:58:47 · 1443 阅读 · 0 评论 -
常用技能点:Java中数组复制的三种方式
九哥之所以要给大家分享这个知识点的原因有二,首先数组是我们常用的一种存储结构,经常需要把一个数组中的元素复制到另一个数组中;当集合扩容时,其中的一个过程就是进行数组的复制,如果我们对这个复制过程不理解,自然也就读不懂这个源码了。newLength 是复制后的数组的长度,也可以理解为要复制几个元素,因为这个值是多少,新数组的长度就是多少;这种方法的好处就是比较灵活,不必复制整个数组,可以自己定义从哪个元素开始复制,以及复制多少个元素。今天九哥给大家分享一个虽然很基础,但却很常用的技能点,那就是数组的复制。..原创 2022-08-17 15:22:38 · 1179 阅读 · 0 评论 -
面试题:Redis缓存数据库,持久化机制有哪几种呢?
这是对save命令的优化,在执行redis-cli shutdown命令关闭redis服务时,如果没有开启AOF持久化,就会自动执行bgsave。使用了混合持久化,重写后的新 AOF 文件件前半段是 RDB 格式的全量数据,后半段是 AOF 格式的增量数据。save命令会阻塞当前Redis的线程,直到RDB持久化过程完成为止,若持久化的数据较大,则会造成长时间的阻塞,不建议在线上环境直接使用该命令。AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。...原创 2022-08-17 15:17:35 · 324 阅读 · 0 评论 -
面试干货丨三招教你将Docker镜像体积减小90%!
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。有了Docker容器,对于Java分布式微服务应用来说,无疑是天大的福音,妈妈再也不用但心测试时跑N个虚拟机,直到电脑宕机的情况。三个关键点列在里,围绕这三个点去回答,差别不会很大。...原创 2022-07-28 14:41:11 · 898 阅读 · 0 评论 -
面试干货丨Redis缓存数据库,持久化机制有哪几种你知道吗?!
这是对save命令的优化,在执行redis-clishutdown命令关闭redis服务时,如果没有开启AOF持久化,就会自动执行bgsave。使用了混合持久化,重写后的新AOF文件件前半段是RDB格式的全量数据,后半段是AOF格式的增量数据。save命令会阻塞当前Redis的线程,直到RDB持久化过程完成为止,若持久化的数据较大,则会造成长时间的阻塞,不建议在线上环境直接使用该命令。AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。...原创 2022-07-28 14:34:25 · 254 阅读 · 0 评论 -
大厂面试“被虐”记丨也许这是哈希表史无前例的面试,一个字:透!
针对 hashmap 面试题网上也是一坨坨五花八门的答案,在面试的过程中啊,我们除了要征服面试官,秀出我们的技术功底,其实也是面试者之间的 PK,面十进一,甚至几十进一,那你要如何成为最优秀的那一个拿下 offer。小白误闯,年后想跳槽进大厂的,一定好看完。如何破解烂大街的HashMap面试题?怎样的解题思路才能 PK 掉其他竞争者?网上答案一大堆,怎么突出你的过人之处?互联网大厂关于HashMap的面试题互联网大厂必问题 :BATJ / TMD正在上传…重新上传取消HashMap是一个数据结构问题,可以从原创 2022-07-13 17:47:58 · 188 阅读 · 0 评论