1. 程式人生 > >幾道常問的題

幾道常問的題

是在牛客網上的某大神面經裡看到的,大神總結了一下問題,我給寫上答案方便查閱,有不對的請留言,隨時修改。

J2SE基礎

九種基本資料型別的大小,以及他們的封裝類

基本型別 大小/byte 封裝類
byte 1 Byte
short 2 Short
char 2 Character
int 4 Integer
float 4 Float
double 8 Double
long 8 Long
boolean - Boolean

Switch能否用string做引數?

在jdk7之前不能,jdk7之後可以。

equals與==的區別。

  • == 是一個運算子。
  • Equals則是string物件的方法,可以.(點)出來。

對於String物件來說,例項化後的物件可以儲存在不同的位置,但是儲存內容是相同的,此時,如果要比較儲存內容,就要用equals。

Object有哪些公用方法?

  • clone()
  • equals()
  • hashcode()
  • toString()
  • notify()
  • notifyAll()
  • wait()
  • getClass()

Java的四種引用,強弱軟虛,用到的場景

不知道

Hashcode的作用

hashcode用來鑑定2個物件是否相等的,通常要求與equals邏輯一致,一般在Collection和Map中使用。

ArrayList、LinkedList、Vector的區別

  • ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構。
  • 對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標。
  • 對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料。
  • Vector 和ArrayList類似,但屬於強同步類。如果你的程式本身是執行緒安全的(thread-safe,沒有在多個執行緒之間共享同一個集合/物件),那麼使用ArrayList是更好的選擇。
  • Vector和ArrayList在更多元素新增進來時會請求更大的空間。Vector每次請求其大小的雙倍空間,而ArrayList每次對size增長50%.
  • LinkedList 還實現了 Queue 介面,該介面比List提供了更多的方法,包括 offer(),peek(),poll()等.

一般用的都是ArrayList,詳細見這裡

String、StringBuffer與StringBuilder的區別

String用於存放字元的陣列被宣告為final的,因此只能賦值一次,不可再更改。
要是需要多次更改,需要用到StringBulider或者StringBuffer,兩者不同點在於StringBuffer是執行緒安全的。
StringBulider轉為String:
String m = sb.toString();
String轉StringBuilder:
StringBuilder sb = new StringBuilder(m);

Map、Set、List、Queue、Stack的特點與用法。

詳細見這裡

HashMap和HashTable的區別。

這裡

HashMap和ConcurrentHashMap的區別,HashMap的底層原始碼。

為了執行緒安全。
從ConcurrentHashMap程式碼中可以看出,它引入了一個“分段鎖”的概念,具體可以理解為把一個大的Map拆分成N個小的HashTable,根據key.hashCode()來決定把key放到哪個HashTable中。

TreeMap、HashMap、LindedHashMap的區別。

TreeMap就是紅黑樹的結構
LinkedHashMap使用雙向連結串列來維護key-value對的次序

Collection包結構,與Collections的區別。

Collection是集合類的上級介面,子介面主要有Set 和List、Map。
Collections是針對集合類的一個幫助類,提供了操作集合的工具方法:一系列靜態方法實現對各種集合的搜尋、排序、執行緒安全化等操作。

try catch finally,try裡有return,finally還執行麼?

如果try中有異常並且try中有return這時候正常執行順序是try—-catch—finally— return
總之 finally 永遠執行!

Excption與Error包結構。OOM你遇到過哪些情況,SOF你遇到過哪些情況。

詳情

Java面向物件的三個特徵與含義。

封裝,繼承,多型

Override和Overload的含義去區別。

過載的時候,方法名要一樣,但是引數型別和個數不一樣,返回值型別可以相同也可以不相同。無法以返回型別作為過載函式的區分標準。
重寫的時候,是覆蓋之前的方法體,執行新寫的方法體。

interface與abstract類的區別。

  • abstract class 在Java中表示的是一種繼承關係,一個類只能使用一次繼承關係。但是,一個類卻可以實現多個interface。
  • 在abstract class 中可以有自己的資料成員,也可以有非abstarct的方法。
  • 抽象類中可以有非抽象方法。介面中則不能有實現方法。
    待補充

Static class 與non static class的區別。

詳情

java多型的實現原理。

不知道

實現多執行緒的兩種方法:Thread與Runable。

Thread是繼承了Thread類,Runnable是實現了Runnable介面,Runnable可以重用程式碼,更好一些。

執行緒同步的方法

sychronized、lock、reentrantLock等。

鎖的等級:方法鎖、物件鎖、類鎖。

寫出生產者消費者模式。

ThreadLocal的設計理念與作用。

ThreadPool用法與優勢。

第一:降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷燬造成的消耗。
第二:提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。
第三:提高執行緒的可管理性。
先定義一個執行緒池ThreadPoolExecutor,使用的時候用executor來呼叫runnable。

Concurrent包裡的其他東西

ArrayBlockingQueue、CountDownLatch等等。

wait()和sleep()的區別。

在呼叫sleep()方法的過程中,執行緒不會釋放物件鎖。
而當呼叫wait()方法的時候,執行緒會放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件呼叫notify()方法後本執行緒才進入物件鎖定池準備

foreach與正常for迴圈效率對比。

在固定長度或長度不需要計算的時候for迴圈效率高於foreach.
在不確定長度,或計算長度有效能損耗的時候,用foreach比較方便.

Java IO與NIO。

IO是面向流的,NIO是面向緩衝區的
詳情

反射的作用於原理。

泛型常用特點,List能否轉為List。

向上轉型是安全的

解析XML的幾種方式的原理與特點:DOM、SAX、PULL。

  • SAX是基於事件流的解析
    當解析器發現元素開始、元素結束、文字、文件的開始或結束等時,傳送事件,程式設計師編寫響應這些事件的程式碼,儲存資料
  • DOM是基於XML文件樹結構的解析
    解析器讀入整個文件,然後構建一個駐留記憶體的樹結構,然後程式碼就可以使用 DOM 介面來操作這個樹結構

詳情

Java與C++對比。

Java1.7與1.8新特性。

設計模式:單例、工廠、介面卡、責任鏈、觀察者等等。

JNI的使用。

JVM

記憶體模型以及分割槽,需要詳細到每個區放什麼

分為棧,堆,方法區,方法區中存放.class檔案的內容和靜態成員以及型別資料,棧存放引用,堆存放例項化的物件。

堆裡面的分割槽:Eden,survival from to,老年代,各自的特點

詳情

物件建立方法,物件的記憶體分配,物件的訪問定位

虛擬機器遇到new 關鍵字的時候,首先去常量池中尋找有沒有這個類的符號引用,並且檢查該引用的類是否已經被載入,解析,和初始化過,如果沒有則會先執行該類的載入過程, 在通過檢查後,虛擬機器為該新生物件分配記憶體。
訪問定位包括控制代碼訪問和直接指標訪問。

GC的兩種判定方法

引用計數與引用鏈

GC的三種收集方法:標記清除、標記整理、複製演算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?

GC收集器有哪些?CMS收集器與G1收集器的特點

Minor GC與Full GC分別在什麼時候發生?

幾種常用的記憶體除錯工具

jmap、jstack、jconsole。

類載入的五個過程

載入、驗證、準備、解析、初始化

雙親委派模型

Bootstrap ClassLoader、Extension ClassLoader、ApplicationClassLoader。

分派:靜態分派與動態分派

作業系統

程序和執行緒的區別

a.地址空間和其它資源:程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。
b.通訊:程序間通訊IPC,執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。
c.排程和切換:執行緒上下文切換比程序上下文切換要快得多。
d.在多執行緒OS中,程序不是一個可執行的實體。

執行緒之間如何實現資源共享:

1將要共享的資料封裝成另外一個物件,對這個物件進行操作
2將Runnable作為一個內部類,並在外部類中定義要共享的成員變數。

死鎖的必要條件,怎麼處理死鎖

如果一個程序集合裡面的每個程序都在等待只能由這個集合中的其他一個程序(包括他自身)才能引發的事件,這種情況就是死鎖。
死鎖的四個必要條件
互斥條件(Mutual exclusion):資源不能被共享,只能由一個程序使用。
請求與保持條件(Hold and wait):已經得到資源的程序可以再次申請新的資源。
非剝奪條件(No pre-emption):已經分配的資源不能從相應的程序中被強制地剝奪。
迴圈等待條件(Circular wait):系統中若干程序組成環路,該環路中每個程序都在等待相鄰程序正佔用的資源。
1.忽略該問題。例如鴕鳥演算法,該演算法可以應用在極少發生死鎖的的情況下。為什麼叫鴕鳥演算法呢,因為傳說中鴕鳥看到危險就把頭埋在地底下,可能鴕鳥覺得看不到危險也就沒危險了吧。跟掩耳盜鈴有點像。
2.檢測死鎖並且恢復。
3.仔細地對資源進行動態分配,以避免死鎖。
4.通過破除死鎖四個必要條件之一,來防止死鎖產生。

Window記憶體管理方式:段儲存,頁儲存,段頁儲存

詳情

程序的幾種狀態

  • 執行態:程序佔用CPU,並在CPU上執行;
  • 就緒態:程序已經具備執行條件,但是CPU還沒有分配過來;
  • 阻塞態:程序因等待某件事發生而暫時不能執行;

執行緒的幾種狀態

  • 新建狀態
  • 就緒狀態
  • 執行狀態
  • 阻塞狀態
  • 死亡狀態

IPC幾種通訊方式

管道/FIFO/共享記憶體/訊息佇列/訊號
詳情

什麼是虛擬記憶體

虛擬地址、邏輯地址、線性地址、實體地址的區別

TCP/IP

OSI與TCP/IP各層的結構與功能,都有哪些協議

OSI中的層 功能 TCP/IP協議族
應用層 檔案傳輸,電子郵件,檔案服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示層 資料格式化,程式碼轉換,資料加密 沒有協議
會話層 解除或建立與別的接點的聯絡 沒有協議
傳輸層 提供端對端的介面 TCP,UDP
網路層 為資料包選擇路由 IP,ICMP,RIP,OSPF,BGP,IGMP
資料鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理層 以二進位制資料形式在物理媒體上傳輸資料 ISO2110,IEEE802,IEEE802.2

TCP與UDP的區別

區別 TCP UDP
是否連線 面向連線 面向非連線
傳輸可靠性 可靠 不可靠
應用場合 傳輸大量資料 少量資料
速度

TCP報文結構

TCP的三次握手與四次揮手過程,各個狀態名稱與含義,TIMEWAIT的作用

三次握手:連線請求+同意請求+確認
四次揮手:FIN+ACK+FIN+ACK
詳情

TCP擁塞控制

TCP滑動視窗與回退N針協議

Http的報文結構

Http的狀態碼含義

Http request的幾種型別

Http1.1和Http1.0的區別

Http怎麼處理長連線

HTTP1.1規定了預設保持長連線(HTTP persistent connection ,也有翻譯為持久連線),資料傳輸完成了保持TCP連線不斷開(不發RST包、不四次握手),等待在同域名下繼續用這個通道傳輸資料;相反的就是短連線。

Cookie與Session的作用於原理

cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。

電腦上訪問一個網頁,整個過程是怎麼樣的

DNS、HTTP、TCP、OSPF、IP、ARP

Ping的整個過程。ICMP報文是什麼

C/S模式下使用socket通訊,幾個關鍵函式

accept,getOutputStream

IP地址分類

路由器與交換機區別

資料結構與演算法

連結串列與陣列

佇列和棧,出棧與入棧

連結串列的刪除、插入、反向

字串操作

Hash表的hash函式,衝突解決方法有哪些

開放定址,鏈地址,再雜湊法等。

各種排序:冒泡、選擇、插入、希爾、歸併、快排、堆排、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是否穩定

快排的partition函式與歸併的Merge函式

對冒泡與快排的改進

二分查詢,與變種二分查詢

二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹

二叉樹的前中後續遍歷:遞迴與非遞迴寫法,層序遍歷演算法

圖的BFS與DFS演算法,最小生成樹prim演算法與最短路徑Dijkstra演算法

KMP演算法

排列組合問題

動態規劃、貪心演算法、分治演算法。(一般不會問到)

大資料處理:類似10億條資料找出最大的1000個數………等等

Android
1. Activity與Fragment的生命週期。
2. Acitivty的四中啟動模式與特點。
1. Standard模式(預設)
我們平時直接建立的Activity都是這種模式的Activity,這種模式的Activity的特點是:只要你建立了Activity例項,一旦啟用該Activity,則會向任務棧中加入新建立的例項,退出Activity則會在任務棧中銷燬該例項。

  1. SingleTop模式
    這種模式會考慮當前要啟用的Activity例項在任務棧中是否正處於棧頂,如果處於棧頂則無需重新建立新的例項,會重用已存在的例項,否則會在任務棧中建立新的例項。

  2. SingleTask模式
    如果任務棧中存在該模式的Activity例項,則把棧中該例項以上的Activity例項全部移除,呼叫該例項的newInstance()方法重用該Activity,使該例項處於棧頂位置,否則就重新建立一個新的Activity例項。

  3. SingleInstance模式
    當該模式Activity例項在任務棧中建立後,只要該例項還在任務棧中,即只要啟用的是該型別的Activity,都會通過呼叫例項的newInstance()方法重用該Activity,此時使用的都是同一個Activity例項,它都會處於任務棧的棧頂。此模式一般用於載入較慢的,比較耗效能且不需要每次都重新建立的Activity。

  4. Activity快取方法。
  5. Service的生命週期,兩種啟動方法,有什麼區別。
    1 通過startService

      Service會經歷 onCreate -> onStart
     stopService的時候直接onDestroy
      如果是呼叫者自己直接退出而沒有呼叫stopService的話,Service會一直在後臺執行。下次呼叫者再起來可以stopService。

2 通過bindService

  Service只會執行onCreate, 這個時候服務的呼叫者和服務繫結在一起

  呼叫者退出了,Srevice就會呼叫onUnbind->onDestroyed所謂繫結在一起就共存亡了。並且這種方式還可以使得

呼叫方(例如)呼叫服務上的其他的方法。
5. 怎麼保證service不被殺死。
6. 廣播的兩種註冊方法,有什麼區別。
1.在AndroidManifest.xml檔案中註冊。
好處:一旦應用程式被安裝到手機裡,BroadCast Receiver就開始生效。無論應用程式程序是否執行,運用程式是否在開啟狀態下都可以接受到廣播事件。
2.通過程式碼的方式註冊廣播
好處:一旦運用程式停止,廣播也跟著停止
7. Intent的使用方法,可以傳遞哪些資料型別。
8. ContentProvider使用方法。
9. Thread、AsycTask、IntentService的使用場景與特點。
10. 五種佈局: FrameLayout 、 LinearLayout 、 AbsoluteLayout 、 RelativeLayout 、 TableLayout 各自特點及繪製效率對比。
11. Android的資料儲存形式。
12. Sqlite的基本操作。
13. Android中的MVC模式。
14. Merge、ViewStub的作用。
15. Json有什麼優劣勢。
16. 動畫有哪兩類,各有什麼特點?
17. Handler、Loop訊息佇列模型,各部分的作用。
18. 怎樣退出終止App。
19. Asset目錄與res目錄的區別。
20. Android怎麼加速啟動Activity。
21. Android記憶體優化方法:ListView優化,及時關閉資源,圖片快取等等。
22. Android中弱引用與軟引用的應用場景。
23. Bitmap的四中屬性,與每種屬性隊形的大小。
24. View與View Group分類。自定義View過程:onMeasure()、onLayout()、onDraw()。
25. Touch事件分發機制。
26. Android長連線,怎麼處理心跳機制。
27. Zygote的啟動過程。
28. Android IPC:Binder原理。
29. 你用過什麼框架,是否看過原始碼,是否知道底層原理。
30. Android5.0、6.0新特性。
31. 五大元件
activity,broadcast receiver,service,content provider,intent

相關推薦

面試了10為大資料開發者,總結了見面試題

前面一段時間給公司面試了10個大資料開發的人,自己總結了50道面試題,在此,我分享給大家,希望大家在五月份要找工作的朋友,我的這篇文章能給你有所幫助。 大綱 kafka的message包括哪些資訊 怎麼檢視kafka的offset 一、Map端的shuffle

考的前端面試題(蘑菇街)系列一

今天,偶然在網上看到幾道蘑菇街的筆試題,感覺這些都是前端必考必會的一些常規題,之前做阿里筆試題的時候也碰到其中幾道, 特此哈拿來給自己練手。 好棒啊,CSDN寫部落格,前面不小心關了頁面,都給我自動儲存了,贊一個!!! 自己寫的答案,有不對的,歡迎大家指正,或者有哪些可

問的題

是在牛客網上的某大神面經裡看到的,大神總結了一下問題,我給寫上答案方便查閱,有不對的請留言,隨時修改。 J2SE基礎 九種基本資料型別的大小,以及他們的封裝類 基本型別 大小/byte 封裝類 byte 1

java面試中可能問的個技術問題及答案

string和stringBuffer的區別; a.      常量和變數的區別,string雖然可以在後面增加其他字串,但是增加後就成了另一個物件,所以是個常量,stringBuffer字串改變後; b.     當字串需要經常改變的時候,一般用StringBuffer,

Linux下C語言的經典面試題

ref 使用 linu 學習資源 chan ima 什麽 img c語言 本篇文章整理了幾道Linux下C語言的經典面試題,相信對大家更好的理解Linux下的C語言會有很大的幫助,歡迎大家探討指正。 1、如果在Linux下使用GCC編譯器執行下列程序,輸出結果是什麽? 答

Ch1的個小問題

最大值 需要 是什麽 題目 優先級 思考 問題 優先 網上 接下來的題目需要更多的思考:如何用實驗方法確定以下問題的答案?註意,不要查書,也不要在網上搜索答案,必須親手嘗試——實踐精神是極其重要的。 問題1:int型整數的最小值和最大值是多少(需要精確值)? 問題2:d

bfs求最短路的例題

情況 map 加權 while [] insert dir end void 題目來自於記蒜客數據結構課,類型差不多,都是用bfs求最短路(註意是不加權的最短路,加權的情況後面的文章會講)。 代碼如下: 1 //記蒜客習題 2 //bfs求某點到其他各點的最短距離

HDU4824 disk schedure 雙調歐裏得問題

http ios std put left 請求 自己的 簡單的 sched Disk Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T

水題 d050: 妳那裡現在點了?

names spa clas 卻又 out pan 水題 main ostream 減去15即可(註意這個數小於15的情況) 題目:珊珊到了美國猶他州的楊百翰大學之後,文文禁不住對她的思念,常常想打電話給她,卻又擔心在美國的她是不是在睡覺。好不容易鼓起勇氣打通了電話,第一句

WIP完工入庫及完工退回的個重要問題

技術 product ace related live nco sem mis 之前 1.必須向CST_COMP_SNAP_INTERFACE表中插入此工單全部工序的數據(也就是說相同的工單插入多條,僅僅是工序號不一樣) 標準文檔: Note: If there

MySQL學習筆記16分組復制的個常見問題以及解決辦法

創建數據庫 restart 文件 create read_only exe port nbsp slave MySQL分組復制提供的功能很強大,但是有時會出現一些問題,或者使用上存在一些限制主要包括: (1)分組復制的限制。 (a)存儲引擎只能是InnoDB。 (b)二進制

【前端小小白的學習之路】整理面試題之(HTTP協議)【轉】

ase 賬號 檢測 提交數據 大型數據集 tor 添加 描述 分享 轉自:http://www.cnblogs.com/ranyonsue/p/5984001.html HTTP簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸

【二】剛學Python的簡單練習題

print text for 輸入密碼 color 三次 center p s int python交友娛樂會所:613176398 1、使用while循環輸入 1 2 3 4 5 6 8 9 10 2、求1-100的所有數的和 3、輸出 1-100 內的所

【三】剛學Python的簡單練習題

-1 找到 ext split art style white 字符串索引 是否 python交友娛樂會所:613176398 (一)name = "aleX leNb" 1) 移除 name 變量對應的值兩邊的空格,並輸出處理結果 name = "a

分享經典的javascript面試題

cti function 一點 經典的 bsp log 分享 輸出 for 這幾道題目還是有一點意思的,大家可以研究一番,對自己的技能提升絕對有幫助。 1、調用過程中輸出的內容是什麽 function fun(n, o) { console.log(o);

郁悶了天的問題終於解決了

ner bsp typealias clas ble work pri fault fresh 嚴重: Exception sending context initialized event to listener instance of class org.springf

關於docker使用的個小問題

atm who edi tbb dram ++z bug dockerd 生成 由於剛接觸docker踩了幾個坑,希望本文對網癮少年有所幫助。 Docker分CE版(社區版)和EE版(商用版),具體安裝流程參考文檔介紹,在此不再贅述。下面分Windows和Linux分別踩

C語言之非常簡單的

語言 scanf void 類型 比較 簡單 bsp 增長 語句   C語言之非常簡單的幾道題(還是寫寫),比較簡單吧,主要有幾道題的數據類型(如,第三題)和語句順序(如,第二題)需要註意一小下下。 1. 求表達式S=1*2*3……*N的值大於150時,最小的N的值

Java繼承中的面試題

有一個 str round .sh -s string ava 構造代碼塊 問題 第一題: 1 /* 2 看程序寫結果: 3 A:訪問成員變量的原則:就近原則。 4 B:this和super的問題: 5

您可能不知道Java基礎40見面試題及詳細答案!

java 編程語言 分布式 後端引言上一篇 文章我們實現了區塊鏈的工作量證明機制(Pow),盡可能地實現了挖礦。但是距離真正的區塊鏈應用還有很多重要的特性沒有實現。今天我們來實現區塊鏈數據的存儲機制,將每次生成的區塊鏈數據保存下來。有一點需要註意,區塊鏈本質上是一款分布式的數據庫,我們這裏不實現"分