java面试问答

面试常见技术问题及回答
博主因面试常被指基础知识薄弱,将面试问题更新至此。问题涵盖float精度缺失、分布式多数据源事务、mysql事务隔离级别、耗时sql优化、读写分离、区块链、cpu异常排查、jdk垃圾回收机制、单链表节点插入等,还记录了自己的回答及后续交流。

鉴于面试从来不过,每次都被人说成基础知识薄弱。我将把每次面试遇到的一些面试问题(笔试题更新到另一篇,连接:https://blog.youkuaiyun.com/ml0228123/article/details/90637630)更新进入该帖子,为了省篇幅单独开博客放入答案,每次面试浏览一波。告诫自己技术不好不要去面试,5000的工资没什么不好的。

 

注:本篇中所有答案为当时临场反应。基本应该算是错误答案。正确答案会单独开帖子详解

1、Q:folat类型数据出现精度缺失问题是由于什么引起的?怎么解决?看过Bigdecimal源码吗?(gz二手车)

A:遇到过精度缺失问题(一次在跟同事互相讨论python发现的,最后并没有去解决,只是知道这个事),好像是由于计算机存数的位导致的。

Q:现在让你解决怎么解决?

A:如果只是解决不用考虑效率,我就把他转成字符串,根据.拆分,把小数部分当整数加,整数部分也加。最后考虑下进位再把它们拼在一起

Q:进位问题怎么处理

ps:最后我描述了大数相加的原理(bigInteger),当时发的什么疯,直接说不知道多好,其实进位我自己做了

2:Q如何处理分布式多数据源的事务问题,知道最终一致和强一致的区别吗?

A:个人使用一张临时表去把需要更新的数据先存住,如果更新失败,从临时表取数据更新回去。
Q:方案有问题,多团队合作不会给你更新权限。我们一般用MQ去实现,不管更新完不完成,都让对方去操作。最终一致性意思就是最终结果的一致性,我们一般不要求强一致性

3:Q:知道mysql的事务隔离级别吗:

A:不知道,用的少,主要用orcal和公司的列存数据库。但是会写sql查询。

4:Q:遇到一个耗时sql怎么解决,怎么优化

A:看条件是否经常查询的查询列设置为索引列

Q:怎么判断sql哪个用到了索引,sql长的情况下,还有符合索引的情况下怎么做

A:不熟。

5:Q:说说你最近在做的项目

A:巴拉巴拉,由于某些原因,把数据库连接全改为jdbc,自己实现了缓存机制,并发计数机制
Q:你觉得connection每次连接占用资源占用的主要是什么资源,除了耗时。ps:这个问题问了两遍,我最开始说的是耗时

A:……

6:Q:怎么实现读写分离,如果dba给你两ip,一个用于读一个用于写

A:写两个配置文件,生成连接池A,B。查询的时候使用A连接,更新使用B连接

Q:万一开发人员不听你的,你的框架不就废了?他们全用B也能实现增删改查

A:写个过滤判断他们的sql是不是select打头的,如果是就不能使用B,否则不能使用A

Q:sql解析很复杂,还有什么别的办法吗?或者用什么工具

A:不会……

7:Q:谈谈区块链,我看你简历上有

A: (懵逼中,一年前写的东西哪还记得)大概就是每个用户一个节点,当用户更新数据时得超过半数节点都同意才能更新,还有个挖矿……呃跟扯淡一样,算了,我忘了

8:Q:发现某次更新后cpu异常增高怎么排查

A:去git上看这版本的代码,主要集中在循环判断之类的上面,看情况

Q:怎么正向排查,用过jstack吗?
A:没有

9:Q:jdk 1.5,1.6,1.7,1.8的垃圾回收机制有哪些不同;
A:懵逼中……

10:Q:一个单链表已知头结点和某一个节点P,怎么最快的在该节点前插入一个节点(掌上先机)

A:改成双链表,或者从头结点遍历至P节点,每次记录上一个节点,最终插入前面

Q:有没有更快的方法?

A:(斩钉截铁状)绝对没有!(我链表操作小王子的称号你能忽悠到我?而且书上也是这么说的)

Q:(嫌弃状)我复制P节点为P1,另P->P1,P.data放入我要插入的数据。

A:我凑!(内心os:这尼玛为毛不直接把新节点放到P后面,调换新节点和P的data值不就行了么,我复制你母亲呢。嗯……不过真的实现了单链表已知节点的情况下载节点前加入节点……虽然感觉哪不对,但效果绝对没问题!骚!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值