中烟笔试题
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
昨天去了趟中煙,找這個(gè)位置還費(fèi)了挺大的勁,找來(lái)找去竟然走過(guò)了。
好了,閑話少說(shuō),先看題。
1)
String a=new String("abc");
String b=new String("abc");
創(chuàng)建了幾個(gè)對(duì)象?
答案:3個(gè)?
說(shuō)下原因:"abc"1個(gè),new 2個(gè)。
2)簡(jiǎn)述servlet生命周期,
Servlet和CGI的區(qū)別 Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGet,doPost)等,當(dāng)服務(wù)器決定將實(shí)例銷(xiāo)毀的時(shí)候調(diào)用其destroy方法。 與cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷(xiāo)毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷(xiāo)毀,所以效率上低于servlet。3)jsp內(nèi)置對(duì)象及方法
1.request對(duì)象 客戶(hù)端的請(qǐng)求信息被封裝在request對(duì)象中,通過(guò)它才能了解到客戶(hù)的需求,然后做出響應(yīng)。它是HttpServletRequest類(lèi)的實(shí)例。 1 object getAttribute(String name) 返回指定屬性的屬性值 2 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉 3 String getCharacterEncoding() 返回字符編碼方式 4 int getContentLength() 返回請(qǐng)求體的長(zhǎng)度(以字節(jié)數(shù)) 5 String getContentType() 得到請(qǐng)求體的MIME類(lèi)型 6 ServletInputStream getInputStream() 得到請(qǐng)求體中一行的二進(jìn)制流 7 String getParameter(String name) 返回name指定參數(shù)的參數(shù)值 8 Enumeration getParameterNames() 返回可用參數(shù)名的枚舉 9 String[] getParameterValues(String name) 返回包含參數(shù)name的所有值的數(shù)組 10 String getProtocol() 返回請(qǐng)求用的協(xié)議類(lèi)型及版本號(hào) 11 String getScheme() 返回請(qǐng)求用的計(jì)劃名,如:http.https及ftp等 12 String getServerName() 返回接受請(qǐng)求的服務(wù)器主機(jī)名 13 int getServerPort() 返回服務(wù)器接受此請(qǐng)求所用的端口號(hào) 14 BufferedReader getReader() 返回解碼過(guò)了的請(qǐng)求體 15 String getRemoteAddr() 返回發(fā)送此請(qǐng)求的客戶(hù)端IP地址 16 String getRemoteHost() 返回發(fā)送此請(qǐng)求的客戶(hù)端主機(jī)名 17 void setAttribute(String key,Object obj) 設(shè)置屬性的屬性值 18 String getRealPath(String path) 返回一虛擬路徑的真實(shí)路徑 2.response對(duì)象 response對(duì)象包含了響應(yīng)客戶(hù)請(qǐng)求的有關(guān)信息,但在JSP中很少直接用到它。它是HttpServletResponse類(lèi)的實(shí)例。 1 String getCharacterEncoding() 返回響應(yīng)用的是何種字符編碼 2 ServletOutputStream getOutputStream() 返回響應(yīng)的一個(gè)二進(jìn)制輸出流 3 PrintWriter getWriter() 返回可以向客戶(hù)端輸出字符的一個(gè)對(duì)象 4 void setContentLength(int len) 設(shè)置響應(yīng)頭長(zhǎng)度 5 void setContentType(String type) 設(shè)置響應(yīng)的MIME類(lèi)型 6 sendRedirect(java.lang.String location) 重新定向客戶(hù)端的請(qǐng)求 3.session對(duì)象 session對(duì)象指的是客戶(hù)端與服務(wù)器的一次會(huì)話,從客戶(hù)連到服務(wù)器的一個(gè)WebApplication開(kāi)始,直到客戶(hù)端與服務(wù)器斷開(kāi)連接為止。它是HttpSession類(lèi)的實(shí)例. 1 long getCreationTime() 返回SESSION創(chuàng)建時(shí)間 2 public String getId() 返回SESSION創(chuàng)建時(shí)JSP引擎為它設(shè)的惟一ID號(hào) 3 long getLastAccessedTime() 返回此SESSION里客戶(hù)端最近一次請(qǐng)求時(shí)間 4 int getMaxInactiveInterval() 返回兩次請(qǐng)求間隔多長(zhǎng)時(shí)間此SESSION被取消(ms) 5 String[] getValueNames() 返回一個(gè)包含此SESSION中所有可用屬性的數(shù)組 6 void invalidate() 取消SESSION,使SESSION不可用 7 boolean isNew() 返回服務(wù)器創(chuàng)建的一個(gè)SESSION,客戶(hù)端是否已經(jīng)加入 8 void removeValue(String name) 刪除SESSION中指定的屬性 9 void setMaxInactiveInterval() 設(shè)置兩次請(qǐng)求間隔多長(zhǎng)時(shí)間此SESSION被取消(ms) 4.out對(duì)象 out對(duì)象是JspWriter類(lèi)的實(shí)例,是向客戶(hù)端輸出內(nèi)容常用的對(duì)象 1 void clear() 清除緩沖區(qū)的內(nèi)容 2 void clearBuffer() 清除緩沖區(qū)的當(dāng)前內(nèi)容 3 void flush() 清空流 4 int getBufferSize() 返回緩沖區(qū)以字節(jié)數(shù)的大小,如不設(shè)緩沖區(qū)則為0 5 int getRemaining() 返回緩沖區(qū)還剩余多少可用 6 boolean isAutoFlush() 返回緩沖區(qū)滿(mǎn)時(shí),是自動(dòng)清空還是拋出異常 7 void close() 關(guān)閉輸出流 5.page對(duì)象 page對(duì)象就是指向當(dāng)前JSP頁(yè)面本身,有點(diǎn)象類(lèi)中的this指針,它是java.lang.Object類(lèi)的實(shí)例 1 class getClass 返回此Object的類(lèi) 2 int hashCode() 返回此Object的hash碼 3 boolean equals(Object obj) 判斷此Object是否與指定的Object對(duì)象相等 4 void copy(Object obj) 把此Object拷貝到指定的Object對(duì)象中 5 Object clone() 克隆此Object對(duì)象 6 String toString() 把此Object對(duì)象轉(zhuǎn)換成String類(lèi)的對(duì)象 7 void notify() 喚醒一個(gè)等待的線程 8 void notifyAll() 喚醒所有等待的線程 9 void wait(int timeout) 使一個(gè)線程處于等待直到timeout結(jié)束或被喚醒 10 void wait() 使一個(gè)線程處于等待直到被喚醒 11 void enterMonitor() 對(duì)Object加鎖 12 void exitMonitor() 對(duì)Object開(kāi)鎖 6.application對(duì)象 application對(duì)象實(shí)現(xiàn)了用戶(hù)間數(shù)據(jù)的共享,可存放全局變量。它開(kāi)始于服務(wù)器的啟動(dòng),直到服務(wù)器的關(guān)閉,在此期間,此對(duì)象將一直存在;這樣在用戶(hù)的前后連接或不同用戶(hù)之間的連接中,可以對(duì)此對(duì)象的同一屬性進(jìn)行操作;在任何地方對(duì)此對(duì)象屬性的操作,都將影響到其他用戶(hù)對(duì)此的訪問(wèn)。服務(wù)器的啟動(dòng)和關(guān)閉決定了application對(duì)象的生命。它是ServletContext類(lèi)的實(shí)例。 1 Object getAttribute(String name) 返回給定名的屬性值 2 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉 3 void setAttribute(String name,Object obj) 設(shè)定屬性的屬性值 4 void removeAttribute(String name) 刪除一屬性及其屬性值 5 String getServerInfo() 返回JSP(SERVLET)引擎名及版本號(hào) 6 String getRealPath(String path) 返回一虛擬路徑的真實(shí)路徑 7 ServletContext getContext(String uripath) 返回指定WebApplication的application對(duì)象 8 int getMajorVersion() 返回服務(wù)器支持的Servlet API的最大版本號(hào) 9 int getMinorVersion() 返回服務(wù)器支持的Servlet API的最大版本號(hào) 10 String getMimeType(String file) 返回指定文件的MIME類(lèi)型 11 URL getResource(String path) 返回指定資源(文件及目錄)的URL路徑 12 InputStream getResourceAsStream(String path) 返回指定資源的輸入流 13 RequestDispatcher getRequestDispatcher(String uripath) 返回指定資源的RequestDispatcher對(duì)象 14 Servlet getServlet(String name) 返回指定名的Servlet 15 Enumeration getServlets() 返回所有Servlet的枚舉 16 Enumeration getServletNames() 返回所有Servlet名的枚舉 17 void log(String msg) 把指定消息寫(xiě)入Servlet的日志文件 18 void log(Exception exception,String msg) 把指定異常的棧軌跡及錯(cuò)誤消息寫(xiě)入Servlet的日志文件 19 void log(String msg,Throwable throwable) 把棧軌跡及給出的Throwable異常的說(shuō)明信息 寫(xiě)入Servlet的日志文件 7.exception對(duì)象 exception對(duì)象是一個(gè)例外對(duì)象,當(dāng)一個(gè)頁(yè)面在運(yùn)行過(guò)程中發(fā)生了例外,就產(chǎn)生這個(gè)對(duì)象。如果一個(gè)JSP頁(yè)面要應(yīng)用此對(duì)象,就必須把isErrorPage設(shè)為true,否則無(wú)法編譯。他實(shí)際上是java.lang.Throwable的對(duì)象 1 String getMessage() 返回描述異常的消息 2 String toString() 返回關(guān)于異常的簡(jiǎn)短描述消息 3 void printStackTrace() 顯示異常及其棧軌跡 4 Throwable FillInStackTrace() 重寫(xiě)異常的執(zhí)行棧軌跡 8.pageContext對(duì)象 pageContext對(duì)象提供了對(duì)JSP頁(yè)面內(nèi)所有的對(duì)象及名字空間的訪問(wèn),也就是說(shuō)他可以訪問(wèn)到本頁(yè)所在的SESSION,也可以取本頁(yè)面所在的application的某一屬性值,他相當(dāng)于頁(yè)面中所有功能的集大成者,它的本 類(lèi)名也叫pageContext。 1 JspWriter getOut() 返回當(dāng)前客戶(hù)端響應(yīng)被使用的JspWriter流(out) 2 HttpSession getSession() 返回當(dāng)前頁(yè)中的HttpSession對(duì)象(session) 3 Object getPage() 返回當(dāng)前頁(yè)的Object對(duì)象(page) 4 ServletRequest getRequest() 返回當(dāng)前頁(yè)的ServletRequest對(duì)象(request) 5 ServletResponse getResponse() 返回當(dāng)前頁(yè)的ServletResponse對(duì)象(response) 6 Exception getException() 返回當(dāng)前頁(yè)的Exception對(duì)象(exception) 7 ServletConfig getServletConfig() 返回當(dāng)前頁(yè)的ServletConfig對(duì)象(config) 8 ServletContext getServletContext() 返回當(dāng)前頁(yè)的ServletContext對(duì)象(application) 9 void setAttribute(String name,Object attribute) 設(shè)置屬性及屬性值 10 void setAttribute(String name,Object obj,int scope) 在指定范圍內(nèi)設(shè)置屬性及屬性值 11 public Object getAttribute(String name) 取屬性的值 12 Object getAttribute(String name,int scope) 在指定范圍內(nèi)取屬性的值 13 public Object findAttribute(String name) 尋找一屬性,返回起屬性值或NULL 14 void removeAttribute(String name) 刪除某屬性 15 void removeAttribute(String name,int scope) 在指定范圍刪除某屬性 16 int getAttributeScope(String name) 返回某屬性的作用范圍 17 Enumeration getAttributeNamesInScope(int scope) 返回指定范圍內(nèi)可用的屬性名枚舉 18 void release() 釋放pageContext所占用的資源 19 void forward(String relativeUrlPath) 使當(dāng)前頁(yè)面重導(dǎo)到另一頁(yè)面 20 void include(String relativeUrlPath) 在當(dāng)前位置包含另一文件 9.config對(duì)象 config對(duì)象是在一個(gè)Servlet初始化時(shí),JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時(shí)所要用到的參數(shù)(通過(guò)屬性名和屬性值構(gòu)成)以及服務(wù)器的有關(guān)信息(通過(guò)傳遞一個(gè)ServletContext對(duì)象) 1 ServletContext getServletContext() 返回含有服務(wù)器相關(guān)信息的ServletContext對(duì)象 2 String getInitParameter(String name) 返回初始化參數(shù)的值 3 Enumeration getInitParameterNames() 返回Servlet初始化所需所有參數(shù)的枚舉 4)final,finally,finalize的區(qū)別 final—修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。 finally—再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。 finalize—方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。 5)有關(guān)static /*** 類(lèi)似這樣的選擇題(選擇內(nèi)容為i的值為多少)* 原來(lái)實(shí)例變量也可以改變i啊!!!!* @author Administrator**/ public class testStatic {static int i=100;static {i++;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubtestStatic abc=new testStatic();abc.i++;testStatic abc1=new testStatic();abc1.i--;System.out.print(i);testStatic.i++;}static {i--;}}6)常用的設(shè)計(jì)模式有哪些?寫(xiě)一個(gè)singleton
大體上分為創(chuàng)建模式,機(jī)構(gòu)模式,行為模式
單例模式用法很多,下面算是比較通用的一種:class Singleton {private static Singleton s;private Singleton(){System.out.println("A Singleton Model example");}public static Singleton getSigleton(){if(s==null)s=new Singleton();return s;} }7)有關(guān)final的編程題
8)同步和異步有什么區(qū)別,舉例說(shuō)明
下面這是人家的話: 同步:發(fā)送一個(gè)請(qǐng)求,等待返回,然后再發(fā)送下一個(gè)請(qǐng)求 異步:發(fā)送一個(gè)請(qǐng)求,不等待返回,隨時(shí)可以再發(fā)送下一個(gè)請(qǐng)求 同步可以避免出現(xiàn)死鎖,讀臟數(shù)據(jù)的發(fā)生,一般共享某一資源的時(shí)候用,如果每個(gè)人都有修改權(quán)限,同時(shí)修改一個(gè)文件,有可能使一個(gè)人讀取另一個(gè)人已經(jīng)刪除的內(nèi)容,就會(huì)出錯(cuò),同步就會(huì)按順序來(lái)修改。 異步則是可以提高效率了,現(xiàn)在cpu都是雙核,四核,異步處理的話可以同時(shí)做多項(xiàng)工作,當(dāng)然必須保證是可以并發(fā)處理的。 這些都是對(duì)的。 同步和異步最大的區(qū)別就在于。一個(gè)需要等待,一個(gè)不需要等待。 比如廣播,就是一個(gè)異步例子。發(fā)起者不關(guān)心接收者的狀態(tài)。不需要等待接收者的返回信息 電話,就是一個(gè)同步例子。發(fā)起者需要等待接收者,接通電話后,通信才開(kāi)始。需要等待接收者的返回信息9)繼承和多態(tài)解釋
 
剩下的為數(shù)據(jù)庫(kù)的題。
表T(ID,NAME,ADDRESS,LOGDATA,...)
表M(NAME,PHONE,...)
1)更新表T中日期201-01-09的logdata為2011-01-09(日期類(lèi)型)
2)查找重復(fù)的name的所有記錄
1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)例二:select * from testtablewhere numeber in (select number from people group by number having count(number) > 1 )可以查出testtable表中number相同的記錄2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷,只留有rowid最小的記錄 delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)3、查找表中多余的重復(fù)記錄(多個(gè)字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)4、刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有rowid最小的記錄 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)5、查找表中多余的重復(fù)記錄(多個(gè)字段),不包含rowid最小的記錄 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)(二) 比方說(shuō) 在A表中存在一個(gè)字段“name”, 而且不同記錄之間的“name”值有可能會(huì)相同, 現(xiàn)在就是需要查詢(xún)出在該表中的各記錄之間,“name”值存在重復(fù)的項(xiàng); Select Name,Count(*) From A Group By Name Having Count(*) > 1如果還查性別也相同大則如下: Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1(三) 方法一declare @max integer,@id integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0方法二有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定重復(fù)或都重復(fù)可以忽略。1、對(duì)于第一種重復(fù),比較容易解決,使用select distinct * from tableName就可以得到無(wú)重復(fù)記錄的結(jié)果集。如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除select distinct * into #Tmp from tableNamedrop table tableNameselect * into tableName from #Tmpdrop table #Tmp發(fā)生這種重復(fù)的原因是表設(shè)計(jì)不周產(chǎn)生的,增加唯一索引列即可解決。2、這類(lèi)重復(fù)問(wèn)題通常要求保留重復(fù)記錄中的第一條記錄,操作方法如下假設(shè)有重復(fù)的字段為Name,Address,要求得到這兩個(gè)字段唯一的結(jié)果集select identity(int,1,1) as autoID, * into #Tmp from tableNameselect min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoIDselect * from #Tmp where autoID in(select autoID from #tmp2)最后一個(gè)select即得到了Name,Address不重復(fù)的結(jié)果集(但多了一個(gè)autoID字段,實(shí)際寫(xiě)時(shí)可以寫(xiě)在select子句中省去此列)(四)查詢(xún)重復(fù)select * from tablename where id in (select id from tablename group by id having count(id) > 1) 轉(zhuǎn)載自:http://www.cnblogs.com/congcong/archive/2008/11/07/1328834.html
轉(zhuǎn)載于:https://my.oschina.net/chworld/blog/111969
總結(jié)
 
                            
                        - 上一篇: 雷猴 2016
- 下一篇: 间谍用GAN生成“红发美女”!潜入美国政
