面试中被问到你遇到的java编程中的bug你如何解决的

author author     2023-03-18     780

关键词:

如果大家能把你遇到的bug分享下就非常感谢了问的是java本身语言的bug非常难的一个问题而不是什么系统的问题

首先,要认识 bug。
如果一个程序做了它不应该做的事,或者没有做它应该做的事,那就是 bug。bug 很难避免,尤其在规模化的编程过程中。
我们知道从面向过程的角度来说,一个程序是由数据结构和算法构成的,从面向对象的角度来说,程序可以是由类和对象组成的。因此 bug 我这里分成两类:

在一个 Java 程序中,类和对象的关系可能会造成 bug。这是设计时的问题,例如多实例的同步问题、线程冲突和死锁问题,这是常见的两个潜在的 bug。要尽量避免这类 bug,只能在设计时下功夫。思路一定要清晰,一定要清楚每个类要做些什么,什么时候该做些什么。这类 bug 比较容易发现,但是不易修补,因为牵扯到程序的不同部分,有时候相当麻烦,因此最好一开始就不要让它出现。

然后一些细节上的 bug,属于逻辑漏洞,可能是算法上的漏洞。Java 其实这方面要比 C/C++ 安全,因为后者的某些漏洞是致命的,例如内存泄露、指针冲突、野指针等一系列问题,可能直接导致程序崩溃,但是 Java 绝对不会出现指针问题,内存相对安全。但是 Java 也可能导致内存不断消耗,最终崩溃的情况也是有的。这个问题我也碰到过几次了,如何解决?需要你对你大量使用的类非常熟悉,最好事先仔细看看文档,有的类需要你最后 dispose 的,有的类 add 过后需要 remove 的,有的类的某些方法会间接地创造一些对象。这种 bug 不大容易发现,尤其是我们有时候对 JVM 的绝对信任而忽略了这些细节,甚至造成了不好的习惯。要么不碍事,要么很严重,一但出现问题可能会发现同样的问题几乎出现在所有的地方。所以避免这类 bug 只有谨慎,并且要养长良好的习惯。
顺便说一句,Java 内存溢出后程序就直接退出,可能会导致数据丢失之类的,这个责任担当不起的。
然后逻辑漏洞还没讲完,还有一些和内存无关,但是也是逻辑上的疏忽造成的,例如数组越界、空栈、格式不兼容等等。这些相当难发现,有时候是正常的,有时候就报错了。这个可以说是最普遍的漏洞,也是最难发现的漏洞。这类漏洞要看程序员的水平,经验丰富、思维清晰、反应敏捷、习惯良好的程序员会好一点,但是不是所有的程序员都是这样的,再说人无完人,再怎么水平高也难免犯点小错嘛。这种漏洞基本都是在后期测试(传说中的内测)和已发布的测试版中逐渐被发现。为了尽量早发现,内部的测试要做的好,不过首先负责各个部分的程序员之间要定下默契,程序要符合规范,类和方法尽量简单化,不要一个方法出现 4 个以上的参数,因为那样会巨大的增加测试的麻烦。要写好注释,变量名写完整,等等规范就不一一列举了。然后对测试人员的要求也是比较高的,测试人员必须熟练掌握测试技巧,有的团队这些小 bug 的修复也是测试人员做的,那测试人员也要良好掌握调试技巧,团队内人员要保持良好的沟通。
参考技术A 1.先确定是系统bug还是操作问题,如果是系统bug那说明是系统的问题,需要改正;如果是操作问题,只能说明系统不够完善,需要添加一些控制。
2.如果是系统bug,那么需要确定产生bug的原因,找到bug的位置,这个我一般通过eclipse里面的debug功能来确定。
3.找到产生bug的原因后,根据实务和需求改正bug。
参考技术B 先了解是什么Bug

然后了解Bug是如何产生的

从产生的方面去解决

java程序员在面试中被问到如何配置多数据源以及如何配置多数据源下的分布式事务,该怎么回答?看清再做答

面试官问我:在spring的环境下如何配置多数据源?假设数据层采用的是hibernate或mybatis配置了多数据源后又如何配置分布式事务?请详细回答两个问题给了不少分呢你好,我来先回答你的第一个问题:通常多数据源,在spring中配... 查看详情

java面试常被问到这道题:如何保证缓存与数据库的双写一致性?

面试原题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果... 查看详情

架构师面试,问到你怀疑人生!

金九银十到了,有很多即将面试的朋友咨询怎么做准备。这里必须要和大家再强调一下要准备的7大方面!总结起来包括:1至2门你最熟悉的编程语言+数据结构和算法题+计网+操作系统+设计模式+数据库&#... 查看详情

java面试常被问到这道题:如何保证缓存与数据库的双写一致性?(代码片段)

面试原题:如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如... 查看详情

java面试常被问到这道题:如何保证缓存与数据库的双写一致性?(代码片段)

面试原题:如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如... 查看详情

昨天面试被问到的缓存淘汰算法fifolrulfu及java实现(代码片段)

缓存淘汰算法在高并发、高性能的质量要求不断提高时,我们首先会想到的就是利用缓存予以应对。第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用。但是,缓存的... 查看详情

java_并发编程面试金典15问

...T2执行完后执   行?   这个问题通常会在第一轮面试或电话面试中被问到,以检查你对“连接”方法的熟悉程度   知道了。这个多线程问题比较简单,可以通过join方法实现。 2)、在Java中,锁接口比同步块... 查看详情

面试时经常会被问到的3个问题

...3个问题》中讲了一些写简历的注意事项,今天想聊聊在面试过程中,如何更好的体现出自己的真实实力。面试时,我经常会拿下面3个问题开场:1.请做个简短的自我介绍;2.简单介绍一个自己参与度比较高的项目,以及自己在项... 查看详情

java_并发编程面试金典15问

...T2执行完后执   行?   这个问题通常会在第一轮面试或电话面试中被问到,以检查你对“连接”方法的熟悉程度   知道了。这个多线程问题比较简单,可以通过join方法实现。 2)、在Java中,锁接口比同步块... 查看详情

面试大厂,90%会被问到的java面试题(附答案)

面向对象的三个特征封装,继承,多态多态的好处,代码中如何实现多态,虚拟机中如何实现多态允许不同类对象对同一消息作出相应,好处如下:可替换性:多态对已存在的代码具有可替换性可扩充性:增加新的子类不会影响... 查看详情

java开发篇——设计模式面试被问工厂模式?不要怕看这里!

上一篇中我们分析并实现了面试中经常提到的单例设计模式的各种实现方式,面试中被问到单例基本上就可以搞定了,那么如果在面试被问到23种经典设计模式的“工厂模式”又该如何回答呢?作为面试官以及见证过... 查看详情

面试阿里,字节跳动90%会被问到的微服务,你确定不进来看看吗?

1、您对微服务有何了解?微服务:又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合。通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使... 查看详情

软件测试面试一定会被问到的10个技术问题(附答案)

本文记得熟读并背诵,99%通过技术二本文记得熟读并背诵,99%通过技术二1、测试用例问题范例回答:一般都是让你对一个“书本”“水杯”“电梯”这些老例子做测试用例,这些答案百度一下全部都是,掌握好测试用例的方法... 查看详情

关于物流项目面试可能会被问到的20题总结

文章目录1.简单介绍一下该项目5.数据来源及数据采集11、数据采集如何完成12、数据量大小3.技术架构(技术选项及框架版本)18、离线数仓数仓分层的作用是什么?我来介绍我们这个项目用到的模型:使用到了拉链表7.业务报表... 查看详情

去年去阿里面试,被问到java多线程,我是这样手撕面试官的

1.多线程的基本概念1.1进程与线程程序:是为完成特定任务,用某种语言编写的一组指令的集合,即一段静态代码,静态对象。进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,每个程序都有一个独... 查看详情

面试被问到精通什么技术,懵了……

前两个月,公司java岗位面了50+候选人,面试下来发现几类过不了的情况,分享大家防止踩坑:新技术倒是掌握得挺多,基础的却一塌糊涂。工作多年,从未学习过工作之外的技术栈,也没有对技术... 查看详情

面试时,你被问到过tcp/ip协议吗?

前言:精通TCP/IP,熟练使用Socket进行网路编程。看到这句话,有没有感到很熟悉呀?相信很多人在投递简历的时候都看到过这条要求,很多人会觉得我们在实际开发中一般用不到这些知识,所以对这些东西不屑... 查看详情

web前端面试,被问到ajax如果获取到一个页面的内容,如何渲染到页面呢

参考技术A动态插入页面里面咯 查看详情