常见的Java神话

这些问题在任何面试中都可能太过提出而无法提出,因为它们可能会使候选人推迟。 不管怎样,他们可能会在您自己的时间练习。

误解1)System.exit(0)阻止最终被调用

为什么这样的代码

System.setSecurityManager(new SecurityManager() {@Overridepublic void checkExit(int status) {throw new ThreadDeath();}});try {System.exit(0);} finally {System.out.println("In the finally block");}

打印

In the finally block

为什么不打印堆栈跟踪?

在此代码中,str是一个String对象。

与C ++不同,所有变量都是基元或引用。 变量不能是对象。 这意味着当你有一个像

String str = "Hello";
String text = "Bye";str == text; // compares two references, not their contents.
str = text; // assign the reference text has to str.

在许多情况下,差异不大,但会引起与此类线条的真正混淆。

final StringBuilder sb = new StringBuidler();sb.append("Hello"); // The reference sb is final, not the instance it references.method(sb); // method can alter the instance, but it cannot change the reference.

误解3)Java内存泄漏是C ++开发人员可以理解的。

在Wikipedia上,内存泄漏是

在计算机科学中 ,当计算机程序错误地管理内存分配时,就会发生内存泄漏 。 在面向对象的编程中 ,当对象存储在内存中但无法被运行的代码访问时,可能会发生内存泄漏。

但是,在Java中,对象始终是可访问的,并且清除了那些不能强烈访问的对象。 Java中的内存泄漏一词是指; 保留内存的任何不希望有的增加,通常是由于在不再需要资源时将其记录在集合中。

如果没有纪律,则多线程很难。 如果仅将一堆代码和一堆线程放在一起,就会遇到一个很难解决的问题,这将是一团糟。
但是,如果只使用所需数量的线程,控制线程之间的交互方式,并使用团队中每个人都能理解的一些简单模式,则问题将变得非常简单。 接下来的挑战是使整个团队都遵守规则。

最近,我读了一个涉及整数加法,内存访问,模数和打印到控制台的问题。 尽管每个操作都比该列表中的每个操作慢几个数量级,但该人员仍在尝试加快最快的操作速度,但是使用了更昂贵的操作。

当您想提高性能时,您需要用便宜的操作代替更昂贵的操作,并且如果瓶颈是硬件(例如,读取硬盘驱动器上的数百万个文件),则更改软件无济于事,因为这不是问题的根源。

误解6)随机数总是看起来随机

随机数的特定组合与带模式的数一样可能。 这个问题是我在此博客上提出的问题的转贴。 许多人不敢相信随机数生成器会产生一个看起来根本不是随机的序列。

误解7)浮点数应避免,因为它具有随机误差。

每次相同的操作,浮点都会产生相同的错误。 该错误是可预测的,因此是可管理的。 如果您知道自己在做什么,并遵循一些简单的规则(例如,对结果四舍五入),则浮点代码与使用BigDecimal相比,不会出错,但它更易于阅读并且速度提高了大约100倍(并且不会产生垃圾)。

误解8)时区是永恒的

造成混淆的常见原因是,随着时间的推移,时区会发生变化。 这意味着欧洲/伦敦时代是1970/1/1 01:00而不是00:00,为什么? 在1968年到1970年之间,伦敦的夏令时为2.5年。

在过去几年中,许多其他时区发生了变化。 莫斯科是GMT + 3,现在是GMT + 3(从2011年3月27日开始)。如果您查看2010年的某个时间,应该会看到GMT + 3不是+4。

因为您认为这听起来很奇怪,

  • 在瑞典1721年2月30日
  • 在英国1751年,第一天是3月25日,与法国相差11天。
  • 当美国采用公历时,它是追溯性的,因此记录了几百年的日期可以参考这两个日历。 (通常给两个日期以尽量减少混乱),例如乔治华盛顿的生日从1731年2月11日更改为1732年2月22日。

误解9)当您在一个线程中读取一个非易失性值时,最终会看到一个更新的值。

最后一天在StackOverflow上出现了两次。 基本上,JIT可以优化代码,使其内联线程不变的非易失性字段。 一旦代码编译完成(您可以使用-XX:+ PrintCompilation看到它),它可能永远不会看到您稍后在另一个线程中执行的更改。 添加随机同步块或打印语句可能会减慢过程或使JIT迷惑,并且它不会执行优化(无论是及时执行还是完全执行)。
有关更多信息,请说明何时需要挥发物

误解10)关于Java面试问题的大多数内容都是准确的。

很高比例的Java面试问题要么已经过时(仅十年以上,并且不适用于Java的任何现代版本),要么具有误导性,或者完全是错误的。 不幸的是,这些文件未经检查就被编译和回收了。
我会在StackOverflow上查看答案,因为它们的码头评论更好。 最重要的是,避免使用质量令人惊讶的持续低劣的印度玫瑰之类的网站。 如果您感到学究,请尝试查找一篇文章中可以找到多少拼写错误(使用班级名称和技术术语)和神话。 问题的一部分是没有有效的方法来提供反馈并纠正这些问题。

翻译自: https://www.javacodegeeks.com/2014/05/common-java-myths.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/363576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

萧山职称计算机考试培训,浙江萧山2017年职称计算机考试时间安排

【摘要】环球网校分享的浙江萧山2017年职称计算机考试时间安排届时网校会及时更新职称计算机考试报名入口,希望对大家报考职称计算机考试有帮助,更多资料敬请关注环球职称计算机考试频道,网校会及时更新考【摘要】环球网校分享的“浙江萧山20…

springboot配置idea 热部署

背景: 在开发中,当我们修改代码之后,每次都要重新启动,很是浪费时间,在springboot中就有一种热部署方式,可以实现想要修改不需要每次都重新启动,保存即可生效 用法: 一、maven 添加 …

PMP-PMBOK-培训(3)Introduction to Project Process Groups and Initiating a Project

Overview of project management processes The five process groups are:initiating,planning,executing,mornitoring and controlling,and closing. 转载于:https://www.cnblogs.com/xuxiaoguang/archive/2008/09/03/1282709.html

10分钟看懂Docker和K8S

作者:鲜枣课堂链接:https://www.jianshu.com/p/f1f94c6968f5 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。 这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。…

在Spring Boot中实现相关ID(用于SOA /微服务中的分布式跟踪)

上周参加了在Geecon上Sam Newman的微服务讨论后,我开始思考更多有关用于监视,报告和诊断的面向服务/微服务平台最可能的基本功能:相关ID。 关联ID允许在面向服务的复杂平台中进行分布式跟踪,在该平台中,对单个应用程序…

计算机专业论文关于天气预报的,关于天气预报论文范文写作 天气预报相关论文写作资料...

天气预报,本文是一篇关于天气预报论文范文,可作为相关选题参考,和写作参考文献。天气预报论文参考文献:每天吃过晚饭,严惠语都会准时打开电视,收看黑龙江电视台和云南电视台的天气预报节目.自从女儿考上云南大学,为了能攒够女儿下学期的费用,老公背起行李…

OkHttp自定义重试次数

本文主要应用了OkHttp的Interceptor来实现自定义重试次数 虽然OkHttp自带retryOnConnectionFailure(true)方法可以实现重试,但是不支持自定义重试次数,所以有时并不能满足我们的需求。 #1.自定义重试拦截器: /*** 重试拦截器*/ public clas…

Ruby的库路径

irb下打入p $即显示出来 如: irb(main):003:0* p $: ["c:/ruby/lib/ruby/site_ruby/1.8", "c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt", "c:/ruby/lib/ruby/site_ruby", "c:/ruby/lib/ruby/1.8", "c:/ruby/lib/ruby/1.8/i38 …

【快报】基于K2 BPM的新一代协同办公门户实践交流会

2014年2月28日,“基于BPM的新一代协同办公门户”用户实践交流活动在深圳金茂JW万豪酒店3楼Meet Room IV举办。本次会议由K2携手微软共同举办,邀请到的参会企业都是K2 的BPM老客户或对BPM新一代协同办公门户非常感兴趣的新朋友,他们有&#xf…

80个让你笑爆肚皮的程序员段子,不好笑算我输!

阅读本文大概需要 12 分钟。 1、折磨 对程序员的一般折磨:离奇的需求,对程序员的超级折磨:改三次需求~~~ 2、开发时间 项目经理说:给你三个人,多久可以完成?程序员:3个月!那五个人呢…

Spring Integration Java DSL示例–使用Jms名称空间工厂进一步简化

在较早的博客文章中,我谈到了虚拟卢布戈德堡流程,该流程通过一系列复杂的步骤将字符串变成大写,本文的前提是引入Spring Integration Java DSL,作为通过xml配置文件定义集成流程的替代方法。 感谢Artem Bilan ,在写完…

冯诺依曼计算机结构教案,冯诺依曼结构的计算机-同济大学精品课程.PPT

冯诺依曼结构的计算机-同济大学精品课程* 第一章 概 述 同济大学软件学院 课程的内容: 1.介绍单计算机系统的硬件组成 (内部结构、工作机制) 2.计算机自动工作的原理 3.在对工作原理了解的基础上,讲述有关计算机设 计的…

非安装版的PostgreSQL8.3.3的首次使用经历

第一次用Postgre,已经是好多年以前了,隐约记得是在linux下边,build半天,然后手动配置库文件之类。 今天在整理资料的时候发现,Postgre出现了解压缩直接使用的版本,上边注明了for expert only. 呵呵&#xf…

腾讯TBS X5 WebView的简单使用

工作中经常涉及H5网页的加载工作,最多使用的就是安卓系统控件WebView,但是当网页内容比较多的时候,需要等待很久才能加载完,加载完后用户才能看到网页中的内容,这样用户需要等很久,体验很差。 那能不能边加…

针对新手的Java EE7和Maven项目–第5部分–使用Arquillian / Wildfly 8进行单元测试

从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4部分 , 这是第一篇“额外”的帖子,基于我正在此系列博客文章上“构建”的Maven JavaEE7演示项目。 我们已经定义了一个坚实的结构和一些模块。 在这样的应用程…

C/S,B/S的区别与联系

C/S 是Client/Server 的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用 大型数据库系统,如Oracle、Sybase、Informix 或SQL Server。客户端需要安装专用的客户 端软件。 B/S是Brower/Server 的缩写,客户机上只要安装一个…

五年级下册电子计算机与多媒体,语文人教版五年级下册《电子计算机与多媒体》.doc...

《电子计算机与多媒体》教学设计沈彦坤 石家庄市鹿泉区石井乡封庄小学?一、概述??语文,五年级五年级下册,第一课时熟悉课文内容,学会生字,理解新词意思,学习课文1-3段。了解计算机的产生与发展,了解什么是多媒体,计算机与多媒体…

Airflow安装与使用

# Airflow 1.10安装本次安装Airflow版本为1.10,其需要依赖Python和DB,本次选择的DB为Mysql。本次安装组件及版本如下:Airflow 1.10.0Python 3.6.5Mysql 5.7# 整体流程1. 建表2. 安装3. 配置4. 运行5. 配置任务启动scheduleairflow schedul…

Wordpress安装

Wordpress是一种用PHP语言和MySQL的数据库的开源的免费Blog引擎,用户可以在支持PHP和MySQL数据库的服务器上建立自己的Blog,它具有非常强大的功能和成千上万的插件和模板主题。安装步骤如下(本文以Wordpress2.6中文版为例): (1) 在MySQL中创建Wordpress库&#xff0…

python 内置标准库socketserver模块的思考

socketserver模块简化了编写网络服务器的任务, 在很大程度上封装了一些操作, 你可以看成是事件驱动型的设计, 这很不错。它定义了两个最基本的类--服务器类 BaseServer, 请求处理类 BaseRequestHandler. BaseServer 基本服务器类封装了基本的一些socket操作, socket原语中对so…