年前意外的經歷了一次阿里的電話面試,話說還沒想換工做,但這位業餘HR(應該是技術負責人)都沒介紹工做崗位和要求,直接就約定某晚的電面時間,抱着好奇的態度被「虐」了一把。html
整體感受這位面試官問的問題很是深,基本都是系統或者原理級別的。不知道是否是表明了阿里面試的基本思路。mysql
內存空間(Runtime Data Area)中能夠按照是否線程共享分紅兩塊,線程共享的是方法區(Method Area)和堆(Heap),線程獨享的是Java棧(Java Stack),本地方法棧(Native Method Stack)和PC寄存器(Program Counter Register)。面試
固然從1.8開始有一些變化,按照個人理解,原來常量池等信息都儲存方法區,如今都移到堆裏了。sql
1.8中-XX:PermSize 和 -XX:MaxPermSize 已經失效,取而代之的是一個新的區域 —— Metaspace(元數據區)。在 JDK 1.7 及以往的 JDK 版本中,Java 類信息、常量池、靜態變量都存儲在 Perm(永久代)裏。類的元數據和靜態變量在類加載的時候分配到 Perm,當類被卸載的時候垃圾收集器從 Perm 處理掉類的元數據和靜態變量。固然常量池的東西也會在 Perm 垃圾收集的時候進行處理。瀏覽器
JDK 1.8 的對 JVM 架構的改造將類元數據放到本地內存中,另外,將常量池和靜態變量放到 Java 堆裏。HotSopt VM 將會爲類的元數據明確分配和釋放本地內存。在這種架構下,類元信息就突破了原來 -XX:MaxPermSize 的限制,如今可使用更多的本地內存。這樣就從必定程度上解決了原來在運行時生成大量類的形成常常 Full GC 問題,如運行時使用反射、代理等。緩存
因此升級之後Java堆空間可能會增長。服務器
說實話沒有接觸過1.0,只知道跟1.0相比1.1能夠一次傳輸多個文件,各種瀏覽器大概都支持3~5個請求同時發送。數據結構
http2.0也是最近調Nginx才知道的一些,主要就是二進制的格式替代了原來的文本。後來查了資料大概知道增長了多路複用和首部壓縮解決了head of line blocking,另外還有server pushing等新特性。協議的東西仍是要看一看官網的說明,不過這東西過一段就容易忘。架構
這題我一直沒Get到點,意圖實際上是問瀏覽器緩存對於HTTP Method中Get和Post的請求是否支持,答案就是不支持Post Method。Get能夠被瀏覽器緩存。oop
這題其實我無法答,問的太大,大概瞥過V8的一些機制。好比構建Dom,生成CSS Rule等等。可是真實沒有特別系統的理解過。
只知道mysql innoDB join只支持Nested Loop,不支持Hash Join,就是肯定一個驅動表後不斷Join獲得結果集,再繼續往下Join。因此Join的順序很重要。
索引只知道數據結構是B+Tree,其實就真悲催了。因此反省一下,搜到一篇不錯的文章。
這題也是懵了,其實應該回想一下這一句,
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
簡寫纔是
<meta charset="utf-8" />
http-equiv 這個屬性就是對應 HTTP response headers 裏面的項目,其初衷是讓不能(好比沒有權限)設定服務器 header 的站點能夠經過它來告知瀏覽器一些頁面內容的相關信息。
瞭解以上就知道確定是後者的優先級更高。
總結一下,裸面被虐殘,阿里的面試官絕對是技術大拿,一言不合就問原理,觸及靈魂了。檢討本身仍是應用作的太多,協議啊操做系統啊仍是忘得快,沒有系統的理解。之後仍是應該多溫故知新。