如何用陣列實作佇列?
用陣列實作佇列時要注意 溢出 現象,這時我們可以採用循環數組的方式來解決,即將數組收尾相接。使用front指標指向隊列首位,tail指標指向隊列末位。 (建議學習:java常見面試題)
內部類別存取局部變數的時候,為什麼變數必須加上final修飾?
因為生命週期不同。局部變數在方法結束後就會被銷毀,但內部類別物件並不一定,這樣就會導致內部類別引用了一個不存在的變數。
所以編譯器會在內部類別中產生局部變數的拷貝,這個拷貝的生命週期和內部類別物件相同,就不會出現上述問題。
但這樣就導致了其中一個變數被修改,兩個變數值可能不同的問題。為了解決這個問題,編譯器就要求局部變數需要被final修飾,以確保兩個變數值相同。
在JDK8之後,編譯器不要求內部類別存取的局部變數必須被final修飾,但局部變數值不能被修改(無論是方法或內部類別中),否則會報編譯錯誤。利用javap查看編譯後的字節碼可以發現,編譯器已經加上了final。
long s = 499999999 * 499999999 在上面的程式碼中,s的值是多少?
根據程式碼的計算結果,s的值應該是-1371654655,這是由於Java中右側值的計算預設是int型別。
非靜態內部類別能定義靜態方法嗎?
public class OuterClass{ private static float f = 1.0f; class InnerClass{ public static float func(){return f;} } }
以上程式碼會出現編譯錯誤,因為只有靜態內部類別才能定義靜態方法。
Lock 和 Synchronized 有什麼不同?
1. 使用方法的区别 - **Synchronized**:在需要同步的对象中加入此控制,`synchronized`可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。 - **Lock**:需要显示指定起始位置和终止位置。一般使用`ReentrantLock`类做为锁,多个线程中必须要使用一个`ReentrantLock`类做为对象才能保证锁的生效。且在加锁和解锁处需要通过`lock()`和`unlock()`显示指出。所以一般会在`finally`块中写`unlock()`以防死锁。 2. 性能的区别 `synchronized`是托管给JVM执行的,而`lock`是java写的控制锁的代码。在Java1.5中,`synchronize`是性能低效的。因为这是一个重量级操作,需要调用操作接口,导致有可能加锁消耗的系统时间比加锁以外的操作还多。相比之下使用Java提供的Lock对象,性能更高一些。但是到了Java1.6,发生了变化。`synchronize`在语义上很清晰,可以进行很多优化,有适应自旋,锁消除,锁粗化,轻量级锁,偏向锁等等。导致在Java1.6上`synchronize`的性能并不比Lock差。 - **Synchronized**:采用的是CPU悲观锁机制,即线程获得的是独占锁。独占锁意味着 **其他线程只能依靠阻塞来等待线程释放锁**。而在CPU转换线程阻塞时会引起线程上下文切换,当有很多线程竞争锁的时候,会引起CPU频繁的上下文切换导致效率很低。 - **Lock**:用的是乐观锁方式。所谓乐观锁就是,**每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止**。乐观锁实现的机制就是`CAS`操作。我们可以进一步研究`ReentrantLock`的源代码,会发现其中比较重要的获得锁的一个方法是`compareAndSetState`。这里其实就是调用的CPU提供的特殊指令。 3. `ReentrantLock`:具有更好的可伸缩性:比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者锁投票。
float 變數如何與 0 比較?
folat類型的還有double類型的,這些小數類型在趨近於0的時候直接等於0的可能性很小,一般都是無限趨近於0,因此不能用= =來判斷。應該用|x-0| 如何新建非靜態內部類別? 內部類別在宣告的時候必須是Outer.Inner a,就像int a 一樣,至於靜態內部類別和非靜態內部類別new的時候有點差別: Outer.Inner a = new Outer().new Inner()(非靜態,先有Outer物件才能new 內部類別) Outer.Inner a = new Outer.Inner()(靜態內部類別) Java標識符命名規則 可以包含:字母、數字、$、_(底線),不可用數字開頭,不能是Java 的關鍵字和保留字。 你知道哪些JDK中用到的設計模式? 裝飾模式:java.io 單一範例模式:Runtime類別 簡單工廠模式:Integer.valueOf方法 享元模式:String常數池、Integer.valueOf(int i)、Character.valueOf(char c) 迭代器模式:Iterator 職責鏈模式:ClassLoader的雙親委派模型 解釋器模式:正規表示式java.util.regex.Pattern ConcurrentHashMap如何確保執行緒安全性 Thread.sleep() & Thread.yield()&Thread.wait()的差異 Thread.sleep和Thread.yield()不會導致鎖定行為的改變,如果目前執行緒是擁有鎖定的,那麼Thread.sleep不會讓執行緒釋放鎖定。如果能夠幫助你記憶的話,可以簡單認為和鎖定相關的方法都定義在Object類別中,因此呼叫Thread.sleep是不會影響鎖定的相關行為。 Thread.sleep和Object.wait都會暫停目前的線程,而對於CPU資源來說,不管是哪種方式暫停的線程,都表示它暫時不再需要CPU的執行時間。 OS會將執行時間分配給其它執行緒。差別是,呼叫wait後,需要別的執行緒執行notify/notifyAll才能夠重新獲得CPU執行時間。 arraylist 和 linkedlist 的差別? ArrayList和LinkedList兩者都實作了List接口,但它們之間有些不同。 (1)ArrayList是由Array所支援的基於一個索引的資料結構,所以它提供對元素的隨機存取 (2)與ArrayList相比,在LinkedList中插入、新增和刪除一個元素會更快 (3)LinkedList比ArrayList消耗更多的內存,因為LinkedList中的每個節點儲存了前後節點的引//用程序表示就是
fabs(x) < 0.00001f
以上是java常見面試題目(含答案)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。