欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

不可不知道的10個java謊言

 更新時間:2016年09月28日 14:41:27   投稿:lijiao  
這篇文章主要為大家詳細介紹了不可不知道的10個java謊言,大家一定要謹慎,需要了解的朋友可以參考一下

下面的這些都算是比較高級的問題了,面試中一般也很少問到,因為它們可能會把面試者拒之門外。不過你可以自己找個時間來實踐一下。 

1. System.exit(0)會跳過finally塊的執(zhí)行

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

這段代碼為什么會輸出In the finally block?為什么沒有打印出堆棧跟蹤信息呢? 

2. String str = “Hello”;其中str是一個字符串對象

 跟C++不同的是,Java里的變量要么是基礎類型,要么是引用。變量不可能是對象。這意味著像這樣的表達式:

 String str = "Hello";
 String text = "Bye";
 str == text; // 比較兩個引用,而不是內(nèi)容
 str = text; // 把text的引用賦值給str 

大多數(shù)情況下其實沒有太大的區(qū)別,不過這么寫容易引起困惑。

 final StringBuilder sb = new StringBuidler();
 sb.append("Hello"); // 這個引用是final類型的,而不是這個實例。
 method(sb); // 可以通過方法來修改這個實例,不過這個變量是無法修改的 

3.Java的內(nèi)存泄露跟C++程序員理解的一樣 

內(nèi)存泄露在維基百科上的定義是”在計算機科學中,如果程序沒有正確地管理好內(nèi)存分配 ,就會出現(xiàn)內(nèi)存泄露。在面向?qū)ο缶幊讨校绻麅?nèi)存中的一個對象無法在代碼中訪問不到的話,這就是內(nèi)存泄露?!?不過在Java中,對象總是可達的,那些沒有強引用的對象會被清除掉。內(nèi)存泄露這個術語在Java中意味著:內(nèi)存中存在著不該存在的對象,通常來說是有些不再使用的資源卻仍存儲在集合中。 

4.多線程編程很難 

如果你沒有經(jīng)驗的話,多線程編程的確很難。如果你只是把一堆代碼扔到一堆線程中去執(zhí)行,那樣出了問題根本沒法解決,只能是一團糟。 但如果你能進行線程的按需分配,控制線程間的交互,使用一些團隊中的成員也能明白的簡單的模式,問題就變得簡單多了。當然還有一個挑戰(zhàn)就是你得讓團隊中的所有人都遵循你的這個規(guī)則 

5.不用關心不同操作間性能的不同 

最近聽說有個問題,它涉及到了整數(shù)的相加,內(nèi)存訪問,取模,以及輸出到控制臺。盡管在這些操作里面,每一個都比前面一個要慢一個數(shù)量級,但這哥們就是想優(yōu)化這里面最快的操作,加法,還用了些更昂貴的操作來替換它。 如果你真的想要優(yōu)化性能,你最好用一個廉價的操作來替換掉那些昂貴的操作,如果你的瓶頸在硬件這塊,比方說要從硬盤里面讀取大量的文件,修改軟件的代碼是沒啥用了,因為問題根本 就不在這。 

6.隨機數(shù)都是隨機的 

一組特定的隨機數(shù)就像是某種模式的數(shù)字。這個問題我在這篇文章中已經(jīng)講到過了。很多人都不相信隨機數(shù)生成器生成的數(shù)字其實是不隨機的。 

7.應該盡量避免使用浮點數(shù),因為它們會產(chǎn)生隨機錯誤 

對于同一個操作而言,浮點數(shù)每次都會產(chǎn)生同樣的錯誤。錯誤是可預測的,因此也是可控的。如果你清楚你要做的事情是什么,并且堅持使用一些簡單的規(guī)則,比如說對結(jié)果進行舍入操作,那么浮點數(shù)出的錯也不會比BigDecimal要多,除此之外它的可讀性更強,而且效率快了百倍以上(同時產(chǎn)生的垃圾對象也更少了)。 

8.時區(qū)是永恒不變的 

之所以會有這個誤解是因為,隨著時間的變化,時區(qū)是在改變的。這意味著歐洲/倫敦在新紀元的時候是1970/1/1 01:00而不是00:00,為什么?因為倫敦在1968年到1971年這兩年間的時間內(nèi)使用的是夏令時。

在過去的這些年里面,還有不少時區(qū)也發(fā)生了變化。莫斯科以前是東三區(qū)(GMT+3),現(xiàn)在是東四區(qū)(GMT+4)(從2011年3月27日開始)。如果你看下2010年的時間,你會發(fā)現(xiàn)它是東三區(qū)而不是東四區(qū)。 

還有些事你聽起來或許會感覺很意外:
 1721年的瑞典的2月有30天。
 1751年英格蘭的第一天是3月25日,和法國相比差了11天。

美國采用公歷紀年后,它往前追溯了上百年,這樣原先記錄的那些日期都可以用兩種日歷來進行表示(通常為了更精確會同時提供兩個日期)。比如喬治華盛頓的生日從1731年2月11變成了1732年2月22。 

9.當你在線程中讀取一個非Volatile變量時,你最終能讀取它更新的那個值。 

前幾天這個問題在StackOverflow上出現(xiàn)過兩回了。一般來說,JIT編譯器優(yōu)化代碼的時候會將這個線程沒有修改到的非volatile類型的字段進行內(nèi)聯(lián)。一旦這個代碼被編譯了(你可以通過-XX:+PrintCompilation看到),你在另一個線程對這個字段進行的修改它很可能就永遠也看不到了。加上隨機的同步塊或者打印語句可以推遲這個優(yōu)化的執(zhí)行,或者擾亂JIT編譯器,讓它不去執(zhí)行這個優(yōu)化。 

10.Java面試題都是正確的 

有很多Java面試題要么是過時了(超過10年沒有更新了,和現(xiàn)在的Java版本已經(jīng)脫節(jié)),要么是誤導大家的,甚至可能是錯的。不幸的是這些答案都沒有檢查過就被到處傳來傳去。 

我會參考Stackoverflow上面的答案,因為這里的答案同行審查做的更好些。總的來說,像rose india這樣的網(wǎng)站就不要上了,上面的答案的質(zhì)量差的離譜。如果你喜歡刨根究底的話,可以看看上面一篇文章里有多少拼寫錯誤(類名以及專業(yè)術語)或者錯誤的言論。存在這些問題的一個原因在于沒有一個有效的反饋機制來糾正這些錯誤。 

為大家推薦一些Java面試題:

最有價值的50道java面試題 適用于準入職Java程序員

10個經(jīng)典的Java main方法面試題

探討Java中最常見的十道面試題(超經(jīng)典)

適用于Java程序員的10道XML面試題 新鮮出爐

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot+MySQL實現(xiàn)讀寫分離的多種具體方案

    SpringBoot+MySQL實現(xiàn)讀寫分離的多種具體方案

    在高并發(fā)和大數(shù)據(jù)量的場景下,數(shù)據(jù)庫成為了系統(tǒng)的瓶頸。為了提高數(shù)據(jù)庫的處理能力和性能,讀寫分離成為了一種常用的解決方案,本文將介紹在Spring?Boot項目中實現(xiàn)MySQL數(shù)據(jù)庫讀寫分離的多種具體方案,需要的朋友可以參考下
    2023-06-06
  • 使用IDEA和Gradle構(gòu)建Vertx項目(圖文步驟)

    使用IDEA和Gradle構(gòu)建Vertx項目(圖文步驟)

    這篇文章主要介紹了使用IDEA和Gradle構(gòu)建Vertx項目(圖文步驟),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • MyBatis-Plus雪花算法實現(xiàn)源碼解讀

    MyBatis-Plus雪花算法實現(xiàn)源碼解讀

    雪花算法是一種用于生成唯一標識符(ID)的分布式算法,雪花算法的設計目標是在分布式系統(tǒng)中生成全局唯一的ID,同時保證ID的有序性和趨勢遞增,這篇文章主要介紹了MyBatis-Plus雪花算法實現(xiàn)源碼解析,需要的朋友可以參考下
    2023-12-12
  • spring-boot讀取props和yml配置文件的方法

    spring-boot讀取props和yml配置文件的方法

    本篇文章主要介紹了spring-boot讀取props和yml配置文件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • SpringBoot實現(xiàn)發(fā)送QQ郵件的示例代碼

    SpringBoot實現(xiàn)發(fā)送QQ郵件的示例代碼

    這篇文章主要介紹了SpringBoot如何實現(xiàn)發(fā)送QQ郵件功能,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Java后端中dto、vo、entity的區(qū)別淺析

    Java后端中dto、vo、entity的區(qū)別淺析

    這篇文章主要給大家介紹了關于Java后端中dto、vo、entity區(qū)別的相關資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-01-01
  • JavaWeb項目Servlet無法訪問問題解決

    JavaWeb項目Servlet無法訪問問題解決

    這篇文章主要介紹了JavaWeb項目Servlet無法訪問問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Spring Boot 集成MyBatis 教程詳解

    Spring Boot 集成MyBatis 教程詳解

    這篇文章主要介紹了Spring Boot 集成MyBatis 教程詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-04-04
  • SVN 安裝教程之服務器和客戶端

    SVN 安裝教程之服務器和客戶端

    這篇文章主要介紹了SVN 安裝教程之服務器和客戶端的相關資料,這里對安裝步驟進行了詳細介紹,需要的朋友可以參考下
    2016-11-11
  • Java關鍵字finally_動力節(jié)點Java學院整理

    Java關鍵字finally_動力節(jié)點Java學院整理

    java關鍵字finally不管是否出現(xiàn)異常,finally子句總是在塊完成之前執(zhí)行。下面通過實現(xiàn)代碼給大家介紹Java關鍵字finally相關知識,需要的的朋友參考下吧
    2017-04-04

最新評論