鉴于面试从来不过,每次都被人说成基础知识薄弱。我将把每次面试遇到的一些面试问题(笔试题更新到另一篇,连接: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值不就行了么,我复制你母亲呢。嗯……不过真的实现了单链表已知节点的情况下载节点前加入节点……虽然感觉哪不对,但效果绝对没问题!骚!)
面试常见技术问题及回答
博主因面试常被指基础知识薄弱,将面试问题更新至此。问题涵盖float精度缺失、分布式多数据源事务、mysql事务隔离级别、耗时sql优化、读写分离、区块链、cpu异常排查、jdk垃圾回收机制、单链表节点插入等,还记录了自己的回答及后续交流。
3053

被折叠的 条评论
为什么被折叠?



