1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 零碎Java面试题收集

零碎Java面试题收集

时间:2024-05-21 15:00:04

相关推荐

零碎Java面试题收集

java实现平方根

方案一:二分法,无限逼近

如何使用java语言计算一个正整数的平方根呢(自定义Sqrt函数)? - 灰信网(软件开发博客聚合)

时间轮的原理与应用

时间轮原理及其在框架中的应用_服务器_vivo互联网技术_InfoQ写作社区

时间轮的应用

1)心跳检测

2)超时处理

3)Redisson 分布式锁续期

普通定时任务的缺点

接口并发量大扛不住你的第一反应怎么解决?

第一反应肯定是报告领导,配合运维调查原因,然后做出应对措施吧,都没具体说什么接口,什么业务,就无脑加缓存了,而且加缓存就是改代码吧,改代码需要上线吧,上线是大事,需要领导审批,没对症下药,上线没效果怎么办,这是拿生产环境来测试效果,很严重的生产环境禁止行为,如果面试的时候你跟我说加缓存,我只能说你一点工作经验都没有,我要的是实际工作技巧,而不是待在象牙塔里只懂八股文的学生;

一般公司的一套上线流程走下来,系统早顶不住了。我们是先查哪个接口的问题,在使用nginx先把这个接口给封了,然后该扩容就扩容,该加缓存就加缓存,该改代码在改代码;

第一反应应该是为什么会流量激增,是业务时段的特殊性还是人为攻击,问题不定性就忙着解决更容易好心办坏事;

第一反应不是应该直接去定位做perf分析?说不定是你团队某个撒币队友没有加mysql索引呢?说不定是你硬盘有问题导致io慢了?说不定是你路由器炸了导致网络有问题?我是反对直接一上来就加缓存的,哪有这么玩的?

面试官:说下你公司系统怎么设计防重复数据的

1)唯一索引

2)乐观锁,版本号控制

3)分布式锁

4)状态机幂等:订单等单据类业务,存在很长的状态流转,一定要深刻理解状态机,对业务系统设计能力提高有很大帮助

5)单独整一个防重表

YY直播一面

1.mysql的binlog和redolog如何保证数据的一致性,MVCC有了解嘛

两阶段提交

2.索引覆盖和索引下推是什么

3.redis的map是怎么做的

4.redis做排行榜是怎么处理的,如果排行榜分数相同,我想要最先到达分数的排前或者后,如何处理

ty的0拷贝是怎么做的

6.cpu过高如何处理,我答了top,面试官问还有没更加好的办法【结束之后问了他这个问题,阿里的arthas】

7.用过哪些rpc协议,JVM参数

8.问了下tcp的三次握手,意思一下

GG也是不难的问题,就是全问到我没被问过的点子上,草

图片对比方案的问题:服务器有用户上传的图片,手机上有的上传,有的没上传,如何找出没上传的,名字对比不可靠,不能用这种方式

方案一:

上传的时候存个内容的md5,md5对比

ps:之前AMS保存从PMS获取过来的定价详情时,也同时获取到了该定价详情的md5串,比较定价时,实际比的是md5串;

讲述布隆过滤器和BitMap的应用

如何快速判断一个用户是否访问过我们的 APP?

cpu使用率过高和jvm old占用过高排查过程

面试官:如何用最少的老鼠试出有毒的牛奶?

spring-retry注解

确实很优雅,所以我要扯下这个注解的神秘面纱。

漫画 | 一台Linux服务器最多能支撑多少个TCP连接?

我越来越意识到,面向失败的设计,才是保命之道。

数据库篇

锁住余额,为何还会更新异常?

MVCC多版本控制

1)多版本控制: 指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。在内部实现中,与Postgres在数据行上实现多版本不同,InnoDB是在undolog中实现的,通过undolog可以找回数据的历史版本。找回的数据历史版本可以提供给用户读(按照隔离级别的定义,有些读请求只能看到比较老的数据版本),也可以在回滚的时候覆盖数据页上的数据。在InnoDB内部中,会记录一个全局的活跃读写事务数组,其主要用来判断事务的可见性

2)文中还有一个关于多版本并发控制的例子,可以记一下

一次慢查询暴露的隐蔽的问题

1)关注mybatis会自动进行java Date类型到数据库Timestamp类型的转换

2)隐式类型转换发生在索引字段时,会导致索引失效,索引失效也就导致慢查询

问题原因:

因为项目设置了不同包下的,日志级别不同。而用户自定义的一个feign的decoder解析response的过程依赖于日志级别,只有在是debug级别时才走重写后的toString()方法(该方法内会读取响应流字节数组,最终得到json数据),而另外的包是info级别,导致没走重写的toString()方法,而是走了Object自己的toString()方法,所以就打印出了对象地址而不是实际的响应json数据

这个问题的关键,还是在于响应的解析,强依赖了日志级别

【高级进阶】真实案例!如何解决源码级问题!为什么要刨根问题!_哔哩哔哩_bilibili

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。