2018.5.16 面試題
冒著請假扣錢下月要吃土的風險還是請了半天的假去面試,雖然知道自己肯定是打醬油,但是也是去賺賺經驗吧!
這兩家都是做過校招的,公司還挺大,人也不少,所以對我來說更有難度了,而且是我第二次做筆試。。下面是我印象比較深的的題目並且百度了部分答案供我以後參考。
1.有三個小球,一個偏重,其他兩個一樣重,幾次可以稱出這個小球。有一堆球只使用天秤稱重兩次,其中有一個是偏重的求,那麽這一堆球最多有多少個?
三個球拿起兩個放到天秤上有兩種情況:1)兩個一樣重,則剩下的是重的
2)不一樣重,偏重的是不一樣的那個
WTF??這麽簡單,不會我審錯題了吧!!
第二問:答案應該是9
1)第一次將9個球分為3組,稱重其中兩組,如果一樣重,則偏重的在剩下的一組中;
2)稱重剩下的3個球,結果同上。
忽然柳暗花明,上一個題是一個引子,只要剩下的球是三組或是三個就可以使用一次稱重。擴展如果是三次則就成了27個球了,果然我的邏輯能力很差。
搜題時還看到一個,不知道小球輕重的題,也扒下來了!!
十二個外表相同的小球,其中一個與其它重量不同,但不知道是輕是重;現有一天平,問怎樣通過三次稱量找出那個小球
把這12個球編號:1234 5678 ABCD
第一次,天平兩邊各放4個,比如是 1234 | 5678,有三種可能:
1. 兩端平衡。說明目標球是在 ABCD 之中;12345678 是正常的。
第二次這樣稱: 123 | ABC。也有三種可能:
(1) 兩端平衡。說明目標是 D 。
(2) 左重右輕。說明目標球在 ABC 之中,且比正常球輕了。第三次稱一下 A | B 便可。
(3) 左輕右重。說明目標球在 ABC 之中,且比正常球重了。第三次稱一下 A | B 便可。
2. 左重右輕。說明 ABCD 是正常的。
第二次這樣稱: 34567 | ABCD8。也有三種可能:
(1) 兩端平衡。說明目標球在 12 之中,第三次稱一下 1 | D 便可。
(2) 左重右輕。記住第一次稱的結果是 1234 重,5678 輕。這次34567 重了,說明 567 一定正常(“567重了”與第一次所稱矛盾,“567輕了”與第二次所稱矛盾)。目標球一定在 348 之中。第三次稱一下 3 | 4,其中較重的一個就是目標球(如果平衡,8 就是目標球,它比正常球來得輕)。
(3) 左輕右重。記住第一次稱的結果是 1234 重,5678 輕。這次34567 輕了,說明 34 一定正常(“34輕了”與第一次所稱矛盾,“34重了”與第二次所稱矛盾),而且 8 也一定正常(“8重了”與第一次所稱矛盾,“8輕了”與第二次所稱矛盾)。目標球一定在 567 之中,比正常球輕。第三次稱一下 5 | 6 便可。
3. 左輕右重。說明 ABCD 是正常的。
第二次這樣稱: 34567 | ABCD8。也有三種可能:
(1) 兩端平衡。說明目標球在 12 之中,第三次稱一下 1 | D 便可。
(2) 左重右輕。記住第一次稱的結果是 1234 輕,5678 重。這次34567 重了,說明 34 一定正常(“34重了”與第一次所稱矛盾,“34輕了”與第二次所稱矛盾),而且 8 也一定正常(“8輕了”與第一次所稱矛盾,“8重了”與第二次所稱矛盾)。目標球一定在 567 之中,比正常球重。第三次稱一下 5 | 6 便可。
(3) 左輕右重。記住第一次稱的結果是 1234 輕,5678 重。這次34567 輕了,說明 567 一定正常(“567輕了”與第一次所稱矛盾,“567重了”與第二次所稱矛盾)。目標球一定在 348 之中。第三次稱一下 3 | 4,其中較輕的一個就是目標球(如果平衡,8 就是目標球,它比正常球來得重)。
2.你讓工人為你工作7天,給工人的回報是一根金條.金條平分成相連的7段,你必須在每天結束時給他們一段金條,如果只許你兩次把金條弄斷,你如何給你的工人付費?
解:把金條分成1/7、2/7和4/7三份.
這樣,第1天我就可以給他1/7;
第2天我給他2/7,讓他找回我1/7;
第3天我就再給他1/7,加上原先的2/7就是3/7;
第4天我給他那塊4/7,讓他找回那兩塊1/7和2/7的金條;
第5天,再給他1/7;第6天和第2天一樣;
第7天給他找回的那個1/7.
本題實質問題是數字表示問題.由1、2兩個數字可表示1-3三個數字.由1、2、4三個數字可表示1-7七個數字(即1,2,1+2,4,4+1,4+2,4+2+1).
由1、2、4、8四個數字可表示1-15
3.Java九大內置對象及其作用
1、request對象javax.servlet.http.HttpServletRequest
request對象代表了客戶端的請求信息,主要用於接受通過HTTP協議傳送到服務器的數據。(包括頭信息、系統信息、請求方式以及請求參數等)。request對 象的作用域為一次請求。
當Request對象獲取客戶提交的漢字字符時,會出現亂碼問題,必須進行特殊處理。首先,將獲取的字符串用ISO-8859-1進行編碼,並將編碼存發島一個字節數組中,然後再將這個數組轉化為字符串對象如下
Request常用的方法:getParameter(String strTextName) 獲取表單提交的信息.
getProtocol() 獲取客戶使用的協議。
String strProtocol=request.getProtocol();
getServletPath() 獲取客戶提交信息的頁面。String strServlet=request.getServletPath();
getMethod() 獲取客戶提交信息的方式 String strMethod=request.getMethod();
getHeader() 獲取HTTP頭文件中的accept,accept-encoding和Host的值,String strHeader=request.getHeader();
getRermoteAddr() 獲取客戶的IP地址。String strIP=request.getRemoteAddr();
getRemoteHost() 獲取客戶機的名稱。String clientName=request.getRemoteHost();
getServerName() 獲取服務器名稱。 String serverName=request.getServerName();
getServerPort() 獲取服務器的端口號。 int serverPort=request.getServerPort();
getParameterNames() 獲取客戶端提交的所有參數的名字。
[html] view plain copy
- Enumeration enum = request.getParameterNames();
- while(enum.hasMoreElements())
- {
- Strings(String)enum.nextElement();
- out.println(s);
- }
2、response對象 javax.servlet.http.HttpServletResponse
response 代表的是對客戶端的響應,主要是將JSP容器處理過的對象傳回到客戶端。response對象也具有作用域,它只在JSP頁面內有效。
具有動態響應contentType屬性,當一個用戶訪問一個JSP頁面時,如果該頁面用page指令設置頁面的contentType屬性是text/html,那麽JSP引擎將按照這個屬性值做出反應。
如果要動態改變這換個屬性值來響應客戶,就需要使用Response對象的setContentType(String s)方法來改變contentType的屬性值。
response.setContentType(String s); 參數s可取text/html,application/x-msexcel,application/msword等。
在某些情況下,當響應客戶時,需要將客戶重新引導至另一個頁面,可以使用Response的sendRedirect(URL)方法實現客戶的重定向。
例如response.sendRedirect(index.jsp);
3、session對象 javax.servlet.http.HttpSession
Session對象是一個JSP內置對象,它在第一個JSP頁面被裝載時自動創建,完成會話期管理。從一個客戶打開瀏覽器並連接到服務器開始,到客戶關閉瀏覽器離開這個服務器結束,被稱為一個會話。當一個客戶訪問一個服務器時,可能會在這個服務器的幾個頁面之間切換,服務器應當通過某種辦法知道這是一個客戶,就需要Session對象。
當一個客戶首次訪問服務器上的一個JSP頁面時,JSP引擎產生一個Session對象,同時分配一個String類型的ID號,JSP引擎同時將這換個ID號發送到客戶端,存放在Cookie中,這樣Session對象,直到客戶關閉瀏覽器後,服務器端該客戶的Session對象才取消,並且和客戶的會話對應關系消失。當客戶重新打開瀏覽器再連接到該服務器時,服務器為該客戶再創建一個新的Session對象。
session 對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用於保存該用戶的信息,跟蹤用戶的操作狀態。
session對象內部使用Map類來保存數據,因此保存數據的格式為 “Key/value”。 session對象的value可以使復雜的對象類型,而不僅僅局限於字符串類型。
public String getId():獲取Session對象編號。
public void setAttribute(String key,Object obj):將參數Object指定的對象obj添加到Session對象中,並為添加的對象指定一個索引關鍵字。
public Object getAttribute(String key):獲取Session對象中含有關鍵字的對象。
public Boolean isNew():判斷是否是一個新的客戶。
4、application對象javax.servlet.ServletContext
application 對象可將信息保存在服務器中,直到服務器關閉,否則application對象中保存的信息會在整個應用中都有效。與session對象相比,application對象生命周期更長,類似於系統的“全局變量”。
服務器啟動後就產生了這個Application對象,當客戶再所訪問的網站的各個頁面之間瀏覽時,這個Application對象都是同一個,直到服務器關閉。但是與Session對象不同的時,所有客戶的Application對象都時同一個,即所有客戶共享這個內置的Application對象。
setAttribute(String key,Object obj):將參數Object指定的對象obj添加到Application對象中,並為添加的對象指定一個索引關鍵字。
getAttribute(String key):獲取Application對象中含有關鍵字的對象。
5、out 對象javax.servlet.jsp.jspWriter
out 對象用於在Web瀏覽器內輸出信息,並且管理應用服務器上的輸出緩沖區。在使用 out 對象輸出數據時,可以對數據緩沖區進行操作,及時清除緩沖區中的殘余數據,為其他的輸出讓出緩沖空間。待數據輸出完畢後,要及時關閉輸出流。
Out對象時一個輸出流,用來向客戶端輸出數據。Out對象用於各種數據的輸出。其常用方法如下。
out.print():輸出各種類型數據。
out.newLine():輸出一個換行符。
out.close():關閉流。
6、pageContext 對象javax.servlet.jsp.PageContext
pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。
pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。
page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。
7、config 對象javax.servlet.ServletConfig
config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。開發者可以在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。
8 cookie 對象
Cookie是Web服務器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點在用戶電腦上保存信息並且隨後再取回它。舉例來說,一個Web站點可能會為每一個訪問者產生一個唯一的ID,然後以Cookie文件的形式保存在每個用戶的機器上。
創建一個Cookie對象 調用Cookie對象的構造函數就可以創建Cookie對象。Cookie對象的構造函數有兩個字符串參數:Cookie名字和Cookie值。
例如:Cookie c = new Cookie(username",john"); 將Cookie對象傳送到客戶端。
JSP中,如果要將封裝好的Cookie對象傳送到客戶端,可使用Response對象的addCookie()方法。
例如:response.addCookie(c),讀取保存到客戶端的Cookie。
使用Request對象的getCookie()方法,執行時將所有客戶端傳來的Cookie對象以數組的形式排列,如果要取出符合需要的Cookie對象,就需要循環比較數組內每個對象的關鍵字。設置Cookie對象的有效時間,用Cookie對象的setMaxAge()方法便可以設置Cookie對象的有效時間,
例如:Cookie c = newCookie(username","john");c.setMaxAge(3600);
Cookie對象的典型應用時用來統計網站的訪問人數。由於代理服務器、緩存等的使用,唯一能幫助網站精確統計來訪人數的方法就是為每個訪問者建立一個唯一ID。使用Cookie,網站可以完成以下工作:
測定多少人訪問過。測定訪問者有多少是新用戶(即第一次來訪),多少是老用戶。
測定一個用戶多久訪問一次網站。當一個用戶第一次訪問時,網站在數據庫中建立一個新的ID,並把ID通過Cookie傳送給用戶。用戶再次來訪時,網站把該用戶ID對應的計數器加1,得到用戶的來訪次數。
9、exception 對象java.lang.Throwable
exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。
excepation對象和Java的所有對象一樣,都具有系統提供的繼承 結構。
exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 對象。本文版權歸
傳智播客Java培訓學院所有,歡迎轉載,轉載請註明作者出處。謝謝!
作者:傳智播客Java培訓學院
首發:http://www.itcast.cn/javaee
4.Java有幾大類數據類型分別是什麽?
兩大類數據類型,基本類型和引用類型。
基本類型:boolean(1)、float(32)、double(63)、char(16)、byte(8)、int(32)、long(64)、short(16)
引用類型:類、接口、數組
5.get和post有什麽區別?
2018.5.16 面試題