大家好,我是哪吒。
公司最近在招聘實(shí)習(xí)生,作為面試官之一的我,問了一道不起眼的經(jīng)典面試題。
大部分的面試者會這樣答:
下面這個(gè)才是主菜。
大部分面試者心里肯定在想,這會有啥問題,不就是一個(gè)普通的操作嘛!
先從i++操作說起,一個(gè)命令可以拆分成三部分:
我去,這不是吹毛求疵,雞蛋里挑骨頭嘛!這面試不參加也罷!
但是,你想啊,如果當(dāng)線程執(zhí)行到取值或者++操作時(shí),線程突然切換了,會不會有問題呢?
public class ThreadTest1 { int a = 1; int b = 1; public void add() { System.out.println("add start"); for (int i = 0; i < 10000; i++) { a++; b++; } System.out.println("add end"); } public void compare() { System.out.println("compare start"); for (int i = 0; i < 10000; i++) { boolean flag = a < b; if (flag) { System.out.println("a=" + a + ",b=" + b + "flag=" + flag + ",a < b = " + (a < b)); } } System.out.println("compare end"); } public static void main(String[] args) { ThreadTest1 threadTest = new ThreadTest1(); new Thread(() -> threadTest.add()).start(); new Thread(() -> threadTest.compare()).start(); }}
本文鏈接:http://www.tebozhan.com/showinfo-26-11790-0.html一個(gè)關(guān)于 i++ 和 ++i 的面試題打趴了所有人
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 利用SpeechToText功能創(chuàng)建交互式語音助手應(yīng)用程序的實(shí)現(xiàn)指南
下一篇: 徹底搞懂Spring的Bean加載