常見同花順面試題實例總結

題目來自網上面試過人的記錄,我的總結,我的總結,請勿轉載html

面向對象的特徵? 
(答的封裝繼承多態)前端

面向對象編程的優勢?java

1、易維護
採用面向對象思想設計的結構,可讀性高,因爲繼承的存在,即便改變需求,那麼維護也只是在局部模塊,因此維護起來是很是方便和較低成本的。
2、質量高
在設計時,可重用現有的,在之前的項目的領域中已被測試過的類使系統知足業務需求並具備較高的質量。
3、效率高
在軟件開發時,根據設計的須要對現實世界的事物進行抽象,產生類。使用這樣的方法解決問題,接近於平常生活和天然的思考方式,勢必提升軟件開發的效率和質量。
4、易擴展
因爲繼承、封裝、多態的特性,天然設計出高內聚、低耦合的系統結構,使得系統更靈活、更容易擴展,並且成本較低。mysql

 

你熟悉哪些設計模式? 
(答的單例,Builder,abstract工廠,策略,適配器,代理)ios

單例用了面向對象的什麼特性? 
(封裝。。。)web

你會寫幾種單例? 
(這個問題答的還算不錯,總共回答了4種寫法,前段時間恰好作了總結,詳情能夠看博客 
單例模式學習總結面試

線程有哪幾種實現方式? 
(一直沒懂他問的是什麼意思,過後想一想多是想問 
1. 繼承runnable 
2. 繼承Thread 
3. 利用線程池 
 

知道線程池嗎? 
(不熟悉,如實告訴面試官。只知道是線程管理的方式,好比Android的AsyncTask)sql

HTTP和HTTPS的區別? 
(不熟悉,如實告知..可是也提到了https是加密傳輸的,安全性更可靠。可是監聽端口不一樣,https須要ssl證書之類的沒說)數據庫

GET和POST的區別? 
GET直接在url後面,至關於明文傳輸;POST在報文實體,至關於暗文。二者限制的長度不同。POST的長度限制遠大於POST,具體長度忘記了,面試官也沒多問)編程

說一下ArrayList的實現? 
(數組封裝,主要講了下add的時候擴容1.5倍的問題)

通常你們都知道ArrayListLinkedList的大體區別:
1.ArrayList是實現了基於動態數組的數據結構,LinkedList基於鏈表的數據結構。
2.對於隨機訪問getsetArrayList以爲優於LinkedList,由於LinkedList要移動指針。
3.對於新增和刪除操做addremoveLinedList比較佔優點,由於ArrayList要移動數據。

ArrayList刪除操做的時間複雜度?具體過程? 
(線性時間複雜度,解釋了一下,順帶提到了一下鏈表的刪除是常數)

接口和抽象類的區別? 
(主要從is a和like a的角度去答,還有一些語法上的區別,好比抽象類能夠有含具體實現的非abstract方法,接口不能有具體實現的方法一類的)

在高級語言上,一個類只能繼承一個類(抽象類)(正如人不可能同時是生物和非生物),可是能夠實現多個接口(吃飯接口、走路接口)

第一點. 接口是抽象類的變體,接口中全部的方法都是抽象的。而抽象類是聲明方法的存在而不去實現它的類。
第二點. 接口能夠多繼承,抽象類不行
第三點. 接口定義方法,不能實現,而抽象類能夠實現部分方法。
第四點. 接口中基本數據類型爲static 而抽類象不是的。

當你關注一個事物的本質的時候,用抽象類;當你關注一個操做的時候,用接口。

I/0的常見對象

下圖說明相關體系:

 

線程互斥的方法?
四種進程或線程同步互斥的控制方法
一、臨界區:經過對多線程的串行化來訪問公共資源或一段代碼,速度快,適合控制數據訪問。
二、互斥量:爲協調共同對一個共享資源的單獨訪問而設計的。
三、信號量:爲控制一個具備有限數量用戶資源而設計。
四、事 件:用來通知線程有一些事件已發生,從而啓動後繼任務的開始。

tomcat 運行機制

先不去關技術細節,對一個servlet容器,我以爲它首先要作如下事情:
1:實現Servlet api規範。這是最基礎的一個實現,servlet api大部分都是接口規範。如request、response、session、cookie。爲了咱們應用端能正常使用,容器必須有一套完整實現。

1:實現Servlet api規範。這是最基礎的一個實現,servlet api大部分都是接口規範。如request、response、session、cookie。爲了咱們應用端能正常使用,容器必須有一套完整實現。

2:啓動Socket監聽端口,等待http請求。

3:獲取http請求,分發請求給不一樣的協議處理器,如http和https在處理上是不同的。

4:封裝請求,構造HttpServletRequest。把socket獲取的用戶請求字節流轉換成java對象httprequest。構造httpResponse。

5:調用(若未建立,則先加載)servlet,調用init初始化,執行servlet.service()方法。

6:爲httpResponse添加header等頭部信息。

7:socket回寫流,返回知足http協議格式的數據給瀏覽器。

8:實現JSP語法分析器,JSP標記解釋器。JSPservlet實現和渲染引擎。

9:JNDI、JMX等服務實現。容器通常額外提供命名空間服務管理。

10:線程池管理,建立線程池,併爲每一個請求分配線程。

Tcp三次握手

TCP/IP協議,TCP協議提供可靠的鏈接服務,採用三次握手創建一個鏈接.
第一次握手:創建鏈接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
SYN:同步序列編號(Synchronize Sequence Numbers)
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手.
完成三次握手,客戶端與服務器開始傳送數據

 

併發

 

用過哪些數據庫 
(移動端sqlite,寫服務端的時候用過MySQL 
用複雜sql語句的實踐經驗嗎? 
(沒有) 
那通常寫過什麼? 
(增插刪改...) 
那你寫一個,根據字段分組查詢的語句 
(用是用了group by,可是太長時間不接觸數據庫,面試官說語法有問題)

看了下我簡歷上的實習和項目 
問我手機上也沒有能夠看的 
(暑假以後換了手機,調試都用的舊手機,去以前也忘記在新手機上裝一編,這個Android,iOS或者web前端的同窗能夠記得之後把項目給面試官展現。沒有機會給面試官展現一下聊一會項目,算是個遺憾,就算能拿到offer,估計也拿不到高的薪資了)

最後照舊是面試官問我有沒有什麼要問他的 
(問了平時的內部培訓,技術交流與分享機制)

相關文章
相關標籤/搜索