畢業季,跳槽季,不刷點面試題怎麼能行?
前言
馬上就是一年一度的畢業季 跳槽季,找工作三大要素,簡歷,筆試題,面試,如何在衆多面試者中脫穎而出呢?需要在這三要素上下功夫。
簡歷是敲門磚,它決定了你是否有機會參加面試的第一道門檻,如何讓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、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 的內存