來自:互扯程式(微訊號:chat_routine)
互扯程式,某網際網路公司P8級專家攻城獅,曾參與過央視全臺網的研發工作。目前正在做車聯網專案的雲平臺的架構設計與研發工作。平時喜歡打球游泳,偶爾發表一些技術文章。
前言
馬上就是一年一度的畢業季 跳槽季,找工作三大要素,簡歷,筆試題,面試,如何在眾多面試者中脫穎而出呢?需要在這三要素上下功夫。
簡歷是敲門磚,它決定了你是否有機會參加面試的第一道門檻,如何讓HR在成千上萬的簡歷中發現你這顆金子,就看你的簡歷有怎麼樣的閃光點了,小編整理了很多不錯的簡歷模板 在文章的下方獲取。
這一篇文章我們刷一刷面試題
前端開發麵試題
1、前端頁面有哪三層構成,分別是什麼?作用是什麼?
結構層 Html 表示層 CSS 行為層 js;
2、get和post的區別
get是從伺服器上獲取資料,post是向伺服器傳送資料。
get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是透過HTTP post機制,將表單內各個欄位與其內容放置在HTML
HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程
對於get方式,伺服器端用Request.QueryString獲取變數的值,對於post方式,伺服器端用
Request.Form獲取提交的資料。get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。
3、html5有哪些新特性、移除了那些元素?如何處理HTML5新標簽的瀏覽器相容問題?如何區分 HTML 和HTML5?
-
HTML5 現在已經不是 SGML 的子集,主要是關於影象,位置,儲存,多工等功能的增加。
-
繪畫 canvas
-
用於媒介回放的 video 和 audio 元素
-
本地離線儲存 localStorage 長期儲存資料,瀏覽器關閉後資料不丟失;
-
sessionStorage 的資料在瀏覽器關閉後自動刪除
-
語意化更好的內容元素,比如 article、footer、essay-header、nav、section
-
表單控制元件,calendar、date、time、email、url、search
-
新的技術webworker, websockt, Geolocation移除的元素
-
純表現的元素:basefont,big,center,font, s,strike,tt,u;
-
對可用性產生負面影響的元素:frame,frameset,noframes;
-
支援HTML5新標簽:
-
IE8/IE7/IE6支援透過document.createElement方法產生的標簽,
-
可以利用這一特性讓這些瀏覽器支援HTML5新標簽,
-
瀏覽器支援新標簽後,還需要新增標簽預設的樣式:
4、Js的基本資料型別
Undefined
Null、
Boolean、
Number、
String
5、Json物件與json字串互相轉換
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串- 轉換成json物件
JSON.parse(jsonstr); //可以將json字串轉換成json物件
JSON.stringify(jsonobj); //可以將json物件轉換成json對符串
6、解釋一下閉包
Javascript允許使用內部函式—即函式定義和函式運算式位於另一個函式的函式體內。而且,這些內部函式可以訪問它們所在的外部函式中宣告的所有區域性變數、引數和宣告的其他內部函式。當其中一個這樣的內部函式在包含它們的外部函式之外被呼叫時,就會形成閉包。
在一個函式體內再新增一個新的方法(也是一個自定義函式)
函式定義和函式運算式位於另外一個函式的函式體內,並且內部函式可以訪問外部函式中宣告的所有引數
7、陣列轉換成字串
toString()轉換成字串
toLocaleString()轉換成本地字串
8、js定義物件
使用內建物件
var string = new string(“aaa”);使用json符號
var names = [{name:”aaa”,age:20};自定義物件構造
function name(){
his.name=“aaa”;
this.age=20;
}
9、 什麼是盒子模型
把整個頁面看成是一個盒子容器,這個盒子所具有的屬性,內容(content),填充(padding),邊框(border),邊距(margin)
ie盒模型和W3C盒模型
ie盒模型 content包括border和padding
內外邊距誤差
W3C盒模型 content border margin padding
10、選擇器有哪幾個?優先順序?
標簽 * id 類 相鄰 屬性 後代 子 偽類
優先順序 !important>id>class>tag
!important比行內優先順序高
11、塊級元素和行內元素區別?
塊級元素可以直接設定屬性,並且獨佔一行
行內元素直接設定尺寸無效,必須設定為塊
12、對相容性問題進行舉例
在不同瀏覽器中的內外邊距誤差
float的誤差
定位的誤差
css3新屬性支援的誤差(透明度,陰影 單位的誤差)
13、Bootstrap響應式原理
佈局採用四種不同裝置12列佈局
新增媒體查詢
所有圖片元素響應式
可以呼叫封裝好的js元件(支援google地圖)
java基礎面試題
1、Java的基本型別(8個)每個基本型別所佔位數與位元組數
byte 1位元組 8位
short 2位元組 16位
int 4位元組 32位
long 8位元組 64位
char 2位元組 16位
float 4位元組 32位
double 8位元組 64位
boolean 1位元組 8位
2、Int與Integer區別
Integer是int的包裝類,int則是java的一種基本資料型別
Integer變數必須實體化後才能使用,而int變數不需要
Integer實際是物件的取用,當new一個Integer時,實際上是生成一個指標指向此物件;而int則是直接儲存資料值
Integer的預設值是null,int的預設值是0
3、Servlet生命週期
建立servlet實體
當servlet實體化後,將呼叫這個物件的init()方法進行初始化
再呼叫物件的service()方法來處理請求,並傳回處理結果,在呼叫service之前,
需保證init初始化已被成功執行
當需要釋放servlet的時候,呼叫物件的destroy()方法來結束,並釋放資源
4、軟體開發流程
需求分析
概要設計
詳細設計
編碼
測試
軟體交付
驗收
維護
5、三層架構
UI(表現層):主要是指與使用者互動的介面。用於接收使用者輸入的資料和顯示處理後使用者需要的資料。
BLL:(業務邏輯層):UI層和DAL層之間的橋梁。實現業務邏輯。業務邏輯具體包含:驗證、計算、業務規則等等。
DAL:(資料訪問層):與資料庫打交道。主要實現對資料的增、刪、改、查。將儲存在資料庫中的資料提交給業務層,同時將業務層處理的資料儲存到資料庫。(當然這些操作都是基於UI層的。使用者的需求反映給介面(UI),UI反映給BLL,BLL反映給DAL,DAL進行資料的操作,操作後再一一傳回,直到將使用者所需資料反饋給使用者)
6、short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?
對於 short s1 = 1; s1 = s1 + 1; 由於 s1+1 運算時會自動提升運算式的型別,所以結果
是 int 型,再賦值給 short 型別 s1 時,編譯器將報告需要強制轉換型別的錯誤。對於 short s1 = 1; s1 += 1;由於 += 是 java 語言規定的運運算元,java 編譯器會對它進行特殊處理,因此可以正確編譯。
7、下麵這條陳述句一共建立了多少個物件:Strings=”a”+”b”+”c”+”d”;
String s = “a” +”b” + “c” + “d”;
System.out.println(s ==”abcd”);
最終列印的結果應該為 true。所以只建立一個物件 相當於直接定義了一個”abcd”的字
符串
8、try {}裡有一個 return 陳述句,那麼緊跟在這個 try 後的 finally {}裡的 code 會不會被執行,什麼時候被執行,在 return 前還是後?
一般答案:會執行,在方法傳回呼叫前執行。準確的說是在return中間執行。
9、請寫出你最常見到的 5 個 runtimeexception。
轉換異常 ClassCastException
除零異常 ArithmeticException
空指標異常 NullPointerException
索引越界異常 StringIndexOutOfBoundsException
陣列越界異常 ArrayIndexOutOfBoundsException
10、GC 是什麼? 為什麼要有 GC?
GC 是垃圾收集的意思(Gabage Collection),記憶體處理是程式設計人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java 提供的 GC功能可以自動監測物件是否超過作用域從而達到自動回收記憶體的目的,Java 語言沒有提供釋放已分配記憶體的顯示操作方法。
11、什麼時候用 assert
assertion(斷言)在軟體開發中是一種常用的除錯方式,很多開發語言中都支援這種機制。在實現中,assertion 就是在程式中的一條陳述句,它對一個 boolean 運算式進行檢查,一個正確程式必須保證這個 boolean 運算式的值為 true;如果該值為 false,說明程式已經處於不正確的狀態下,assert 將給出警告或退出。一般來說,assertion用於保證程式最基本、關鍵的正確性。assertion 檢查通常在開發和測試時開啟。為了提高效能,在軟體釋出後,assertion 檢查通常是關閉的。
12、java 中有幾種方法可以實現一個執行緒?用什麼關鍵字修飾同步方法? stop()和 suspend()方法為何不推薦使用?
有兩種實現方法,分別是繼承 Thread 類與實現 Runnable 介面
用 synchronized 關鍵字修飾同步方法
反對使用 stop(),是因為它不安全。它會解除由執行緒獲取的所有鎖定,而且如果物件
處於一種不連貫狀態,那麼其他執行緒能在那種狀態下檢查和修改它們。結果很難檢
查出真正的問題所在。suspend()方法容易發生死鎖。呼叫 suspend()的時候,標的執行緒會停下來,但卻仍然持有在這之前獲得的鎖定。此時,其他任何執行緒都不能訪問鎖定的資源,除非被”掛起”的執行緒恢復執行。對任何執行緒來說,如果它們想恢復標的執行緒,同時又試圖使用任何一個鎖定的資源,就會造成死鎖。所以不應該使用
suspend(),而應在自己的 Thread 類中置入一個標誌,指出執行緒應該活動還是掛起。
若標誌指出執行緒應該掛起,便用 wait()命其進入等待狀態。若標誌指出執行緒應當恢
復,則用一個 notify()重新啟動執行緒。
13、同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。
如果資料將在執行緒間共享。例如正在寫的資料以後可能被另一個執行緒讀到,或者正在讀的資料可能已經被另一個執行緒寫過了,那麼這些資料就是共享資料,必須進行同步存取。
當應用程式在物件上呼叫了一個需要花費很長時間來執行的方法,並且不希望讓程式等待方法的傳回時,就應該使用非同步程式設計,在很多情況下採用非同步途徑往往更有效率。
14、當一個執行緒進入一個物件的一個 synchronized 方法後,其它執行緒是否可進入此物件的其它方法?
其他方法前是否加了 synchronized 關鍵字,如果沒加,則能。
如果這個方法內部呼叫了 wait,則可以進入其他 synchronized 方法。
如果其他個方法都加了 synchronized 關鍵字,並且內部沒有呼叫 wait,則不能。
如果其他方法是 static,它用的同步鎖是當前類的位元組碼,與非靜態的方法不能同步,因為非靜態的方法用的是 this。
javaweb面試題
1、說一說 Servlet 的生命週期?
web 容器載入 servlet,生命週期開始。透過呼叫 servlet 的 init()方法進行 servlet 的初始化。透過呼叫 service()方法實現,根據請求的不同呼叫不同的 do***()方法。結束服務,web 容器呼叫 servlet 的 destroy()方法。
2、SERVLET API 中 forward() 與 redirect()的區別?
答:前者僅是容器中控制權的轉向,在客戶端瀏覽器位址列中不會顯示出轉向後的地址;後者則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新傳送請求連結。這樣,從瀏覽器的位址列中可以看到跳轉後的連結地址。所以,前者更加高效,在前者可以滿足需要時,儘量使用 forward()方法,並且,這樣也有助於隱藏實際的連結。
在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用
sendRedirect()方法。
3、 jsp 有哪些內建物件
request 使用者端請求,此請求會包含來自 GET/POST 請求的引數
response 網頁傳回用戶端的回應
pageContext 網頁的屬性是在這裡管理
session 與請求有關的會話期
application servlet 正在執行的內容
out 用來傳送回應的輸出
config servlet 的構架部件
page JSP 網頁本身
exception 針對錯誤網頁,未捕捉的例外
4、JSP 和 Servlet 有哪些相同點和不同點,他們之間的聯絡是什麼?
JSP 是 Servlet 技術的擴充套件,本質上是 Servlet 的簡易方式,更強調應用的外表表達。
JSP 編譯後是”類 servlet”。Servlet 和 JSP 最主要的不同點在於,Servlet 的應用邏輯是 在 Java 檔案中,並且完全從表示層中的 HTML 裡分離開來。而 JSP 的情況是 Java 和HTML 可以組合成一個副檔名為.jsp 的檔案。JSP 側重於檢視,Servlet 主要用於控制邏輯。
5、MVC 的各個部分都有那些技術來實現?如何實現?
MVC 是 Model-View-Controller 的簡寫。Model 代表的是應用的業務邏輯(透過JavaBean,EJB 元件實現), View 是應用的表示面(由 JSP 頁面產生),Controller 是提供應用的處理過程控制(一般是一個 Servlet),透過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的元件實現。這些元件可以進行互動和重用。
6、MVC 的各個部分都有那些技術來實現?如何實現?
MVC 是 Model-View-Controller 的簡寫。Model 代表的是應用的業務邏輯(透過JavaBean,EJB 元件實現), View 是應用的表示面(由 JSP 頁面產生),Controller 是提供應用的處理過程控制(一般是一個 Servlet),透過這種設計模型把應用邏輯,處理過程和顯示邏輯分成不同的元件實現。這些元件可以進行互動和重用。
7、Tomcat 的最佳化經驗
答:去掉對 web.xml 的監視,把 jsp 提前編輯成 Servlet。
有富餘物理記憶體的情況,加大 tomcat 使用的 jvm 的記憶體
●編號642,輸入編號直達本文
●輸入m獲取文章目錄
大資料與人工智慧
更多推薦《18個技術類公眾微信》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。