黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 美團java面試題參考

美團java面試題參考

更新時間:2020-06-05 11:08:58 來源:動力節點 瀏覽2694次

相信大家對美團已經非常熟悉了,美團近年來發展的越來越好。作為互聯網企業,美團對java開發人才的需求也是非常大,而且待遇也是不錯的,因此很多小伙伴也都想學習java進入美團工作。美團在招聘人才的時候也是有面試的,動力節點java培訓機構的小編來給大家一些美團java面試題參考,希望對大家有所幫助。

24 拷貝.jpg

1.System.out.println(3 | 9);輸出什么?

正確答案:11.

考察知識點:&和&&;|和||

&和&&:

共同點:兩者都可做邏輯運算符。它們都表示運算符的兩邊都是true時,結果為true;

不同點: &也是位運算符。& 表示在運算時兩邊都會計算,然后再判斷;&&表示先運算符號左邊的東西,然后判斷是否為true,是true就繼續運算右邊的然后判斷并輸出,是false就停下來直接輸出不會再運行后面的東西。

|和||:

共同點:兩者都可做邏輯運算符。它們都表示運算符的兩邊任意一邊為true,結果為true,兩邊都不是true,結果就為false;

不同點:|也是位運算符。| 表示兩邊都會運算,然后再判斷結果;|| 表示先運算符號左邊的東西,然后判斷是否為true,是true就停下來直接輸出不會再運行后面的東西,是false就繼續運算右邊的然后判斷并輸出。

回到本題:

3 | 9=0011(二進制) | 1001(二進制)=1011(二進制)=11(十進制)

2.說一下轉發(Forward)和重定向(Redirect)的區別

轉發是服務器行為,重定向是客戶端行為。

轉發(Forword) 通過RequestDispatcher對象forward(HttpServletRequest request,HttpServletResponse response)方法實現的。RequestDispatcher 可以通過HttpServletRequest 的 getRequestDispatcher()方法獲得。例如下面的代碼就是跳轉到 login_success.jsp 頁面。

request.getRequestDispatcher("login_success.jsp").forward(request,?response);

重定向(Redirect) 是利用服務器返回的狀態嗎來實現的。客戶端瀏覽器請求服務器的時候,服務器會返回一個狀態碼。服務器通過HttpServletRequestResponse的setStatus(int status)方法設置狀態碼。如果服務器返回301或者302,則瀏覽器會到新的網址重新請求該資源。

3.在瀏覽器中輸入url地址到顯示主頁的過程,整個過程會使用哪些協議

總體來說分為以下幾個過程:

  • DNS解析
  • TCP連接
  • 發送HTTP請求
  • 服務器處理請求并返回HTTP報文
  • 瀏覽器解析渲染頁面
  • 連接結束

4.TCP 三次握手和四次揮手

為了準確無誤地把數據送達目標處,TCP協議采用了三次握手策略。

為什么要三次握手

三次握手的目的是建立可靠的通信信道,說到通訊,簡單來說就是數據的發送與接收,而三次握手最主要的目的就是雙方確認自己與對方的發送與接收是正常的。

第一次握手:Client 什么都不能確認;Server 確認了對方發送正常,自己接收正常。

第二次握手:Client 確認了:自己發送、接收正常,對方發送、接收正常;Server 確認了:自己接收正常,對方發送正常

第三次握手:Client 確認了:自己發送、接收正常,對方發送、接收正常;Server 確認了:自己發送、接收正常,對方發送接收正常

所以三次握手就能確認雙發收發功能都正常,缺一不可。

為什么要傳回 SYN

接收端傳回發送端所發送的 SYN 是為了告訴發送端,我接收到的信息確實就是你所發送的信號了。

SYN 是 TCP/IP 建立連接時使用的握手信號。在客戶機和服務器之間建立正常的 TCP 網絡連接時,客戶機首先發出一個 SYN 消息,服務器使用 SYN-ACK 應答表示接收到了這個消息,最后客戶機再以 ACK(Acknowledgement[漢譯:確認字符 ,在數據通信傳輸中,接收站發給發送站的一種傳輸控制字符。它表示確認發來的數據已經接受無誤。 ])消息響應。這樣在客戶機和服務器之間才能建立起可靠的TCP連接,數據才可以在客戶機和服務器之間傳遞。

傳了 SYN,為啥還要傳 ACK

雙方通信無誤必須是兩者互相發送信息都無誤。傳了 SYN,證明發送方(主動關閉方)到接收方(被動關閉方)的通道沒有問題,但是接收方到發送方的通道還需要 ACK 信號來進行驗證。

斷開一個 TCP 連接則需要“四次揮手”:

客戶端-發送一個 FIN,用來關閉客戶端到服務器的數據傳送服務器-收到這個 FIN,它發回一 個 ACK,確認序號為收到的序號加1 。和 SYN 一樣,一個 FIN 將占用一個序號服務器-關閉與客戶端的連接,發送一個FIN給客戶端客戶端-發回 ACK 報文確認,并將確認序號設置為收到序號加1.

為什么要四次揮手

任何一方都可以在數據傳送結束后發出連接釋放的通知,待對方確認后進入半關閉狀態。當另一方也沒有數據再發送的時候,則發出連接釋放通知,對方確認后就完全關閉了TCP連接。

舉個例子:A 和 B 打電話,通話即將結束后,A 說“我沒啥要說的了”,B回答“我知道了”,但是 B 可能還會有要說的話,A 不能要求 B 跟著自己的節奏結束通話,于是 B 可能又巴拉巴拉說了一通,最后 B 說“我說完了”,A 回答“知道了”,這樣通話才算結束。

5.IP地址與MAC地址的區別

IP地址是指互聯網協議地址(Internet Protocol Address)IP Address的縮寫。IP地址是IP協議提供的一種統一的地址格式,它為互聯網上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。

MAC 地址又稱為物理地址、硬件地址,用來定義網絡設備的位置。網卡的物理地址通常是由網卡生產廠家寫入網卡的,具有全球唯一性。MAC地址用于在網絡中唯一標示一個網卡,一臺電腦會有一或多個網卡,每個網卡都需要有一個唯一的MAC地址。

6.HTTP請求、響應報文格式

HTTP請求報文主要由請求行、請求頭部、請求正文3部分組成

HTTP響應報文主要由狀態行、響應頭部、響應正文3部分組成

7.為什么要使用索引?索引這么多優點,為什么不對表中的每一個列創建一個索引呢?索引是如何提高查詢速度的?說一下使用索引的注意事項?Mysql索引主要使用的兩種數據結構?什么是覆蓋索引?

為什么要使用索引?

(1)通過創建唯一性索引,可以保證數據庫表中每一行數據的唯一性。

(2)可以大大加快 數據的檢索速度(大大減少的檢索的數據量), 這也是創建索引的最主要的原因。

(3)幫助服務器避免排序和臨時表

(4)將隨機IO變為順序IO

(5)可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義

索引這么多優點,為什么不對表中的每一個列創建一個索引呢?

(1)當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。

(2)索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。

(3)創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加

索引是如何提高查詢速度的?

將無序的數據變成相對有序的數據(就像查目錄一樣)

說一下使用索引的注意事項

(1)避免 where 子句中對字段施加函數,這會造成無法命中索引。

(2)在使用InnoDB時使用與業務無關的自增主鍵作為主鍵,即使用邏輯主鍵,而不要使用業務主鍵。

(3)將打算加索引的列設置為 NOT NULL ,否則將導致引擎放棄使用索引而進行全表掃描

刪除長期未使用的索引,不用的索引的存在會造成不必要的性能損耗 MySQL 5.7 可以通過查詢 sys 庫的

(4)chema_unused_indexes 視圖來查詢哪些索引從未被使用

(5)在使用 limit offset 查詢緩慢時,可以借助索引來提高性能

Mysql索引主要使用的哪兩種數據結構?

哈希索引:對于哈希索引來說,底層的數據結構就是哈希表,因此在絕大多數需求為單條記錄查詢的時候,可以選擇哈希索引,查詢性能最快;其余大部分場景,建議選擇BTree索引。

BTree索引:Mysql的BTree索引使用的是B樹中的B+Tree。但對于主要的兩種存儲引擎(MyISAM和InnoDB)的實現方式是不同的。

什么是覆蓋索引?

如果一個索引包含(或者說覆蓋)所有需要查詢的字段的值,我們就稱 之為“覆蓋索引”。我們知道在InnoDB存儲引擎中,如果不是主鍵索引,葉子節點存儲的是主鍵+列值。最終還是要“回表”,也就是要通過主鍵再查找一次,這樣就會比較慢。覆蓋索引就是把要查詢出的列和索引是對應的,不做回表操作!

8.進程與線程的區別是什么?進程間的幾種通信方式說一下?線程間的幾種通信方式知道不?

進程與線程的區別是什么?

線程與進程相似,但線程是一個比進程更小的執行單位。一個進程在其執行的過程中可以產生多個線程。與進程不同的是同類的多個線程共享同一塊內存空間和一組系統資源,所以系統在產生一個線程,或是在各個線程之間作切換工作時,負擔要比進程小得多,也正因為如此,線程也被稱為輕量級進程。另外,也正是因為共享資源,所以線程中執行時一般都要進行同步和互斥。總的來說,進程和線程的主要差別在于它們是不同的操作系統資源管理方式。

進程間的幾種通信方式說一下?

管道(pipe):管道是一種半雙工的通信方式,數據只能單向流動,而且只能在具有血緣關系的進程間使用。進程的血緣關系通常指父子進程關系。管道分為pipe(無名管道)和fifo(命名管道)兩種,有名管道也是半雙工的通信方式,但是它允許無親緣關系進程間通信。

信號量(semophore):信號量是一個計數器,可以用來控制多個進程對共享資源的訪問。它通常作為一種鎖機制,防止某進程正在訪問共享資源時,其他進程也訪問該資源。因此,主要作為進程間以及同一進程內不同線程之間的同步手段。

消息隊列(message queue):消息隊列是由消息組成的鏈表,存放在內核中,并由消息隊列標識符標識。消息隊列克服了信號傳遞信息少,管道只能承載無格式字節流以及緩沖區大小受限等缺點。消息隊列與管道通信相比,其優勢是對每個消息指定特定的消息類型,接收的時候不需要按照隊列次序,而是可以根據自定義條件接收特定類型的消息。

信號(signal):信號是一種比較復雜的通信方式,用于通知接收進程某一事件已經發生。

共享內存(sharedmemory):共享內存就是映射一段能被其他進程所訪問的內存,這段共享內存由一個進程創建,但多個進程都可以訪問,共享內存是最快的IPC方式,它是針對其他進程間的通信方式運行效率低而專門設計的。它往往與其他通信機制,如信號量配合使用,來實現進程間的同步和通信。

套接字(socket):socket,即套接字是一種通信機制,憑借這種機制,客戶/服務器(即要進行通信的進程)系統的開發工作既可以在本地單機上進行,也可以跨網絡進行。也就是說它可以讓不在同一臺計算機但通過網絡連接計算機上的進程進行通信。也因為這樣,套接字明確地將客戶端和服務器區分開來。

線程間的幾種通信方式知道不?

(1)鎖機制

互斥鎖:提供了以排它方式阻止數據結構被并發修改的方法。

讀寫鎖:允許多個線程同時讀共享數據,而對寫操作互斥。

條件變量:可以以原子的方式阻塞進程,直到某個特定條件為真為止。對條件測試是在互斥鎖的保護下進行的。條件變量始終與互斥鎖一起使用。

(2)信號量機制:包括無名線程信號量與有名線程信號量

(3)信號機制:類似于進程間的信號處理。

線程間通信的主要目的是用于線程同步,所以線程沒有象進程通信中用于數據交換的通信機制。

9.為什么要用單例模式?手寫幾種線程安全的單例模式?

簡單來說使用單例模式可以帶來下面幾個好處:

• 對于頻繁使用的對象,可以省略創建對象所花費的時間,這對于那些重量級對象而言,是非常可觀的一筆系統開銷;

• 由于 new 操作的次數減少,因而對系統內存的使用頻率也會降低,這將減輕 GC 壓力,縮短 GC 停頓時間。

懶漢式(雙重檢查加鎖版本)

public?class?Singleton?{
????//volatile保證,當uniqueInstance變量被初始化成Singleton實例時,多個線程可以正確處理uniqueInstance變量
????private?volatile?static?Singleton?uniqueInstance;
????private?Singleton()?{
????}
????public?static?Singleton?getInstance()?{
???????//檢查實例,如果不存在,就進入同步代碼塊
????????if?(uniqueInstance?==?null)?{
????????????//只有第一次才徹底執行這里的代碼
????????????synchronized(Singleton.class)?{
???????????????//進入同步代碼塊后,再檢查一次,如果仍是null,才創建實例
????????????????if?(uniqueInstance?==?null)?{
????????????????????uniqueInstance?=?new?Singleton();
????????????????}
????????????}
????????}
????????return?uniqueInstance;
????}
}

靜態內部類方式

靜態內部實現的單例是懶加載的且線程安全。

只有通過顯式調用 getInstance 方法時,才會顯式裝載 SingletonHolder 類,從而實例化 instance(只有第一次使用這個單例的實例的時候才加載,同時不會有線程安全問題)。

public?class?Singleton?{??
????private?static?class?SingletonHolder?{??
????private?static?final?Singleton?INSTANCE?=?new?Singleton();??
????}??
????private?Singleton?(){}??
????public?static?final?Singleton?getInstance()?{??
????return?SingletonHolder.INSTANCE;??
????}??
}

10.簡單介紹一下bean。知道Spring的bean的作用域與生命周期嗎?

在 Spring 中,那些組成應用程序的主體及由 Spring IOC 容器所管理的對象,被稱之為 bean。簡單地講,bean 就是由 IOC 容器初始化、裝配及管理的對象,除此之外,bean 就與應用程序中的其他對象沒有什么區別了。而 bean 的定義以及 bean 相互間的依賴關系將通過配置元數據來描述。

Spring中的bean默認都是單例的,這些單例Bean在多線程程序下如何保證線程安全呢? 例如對于Web應用來說,Web容器對于每個用戶請求都創建一個單獨的Sevlet線程來處理請求,引入Spring框架之后,每個Action都是單例的,那么對于Spring托管的單例Service Bean,如何保證其安全呢? Spring的單例是基于BeanFactory也就是Spring容器的,單例Bean在此容器內只有一個,Java的單例是基于 JVM,每個 JVM 內只有一個實例。

以上就是動力節點java培訓機構的小編針對“美團java面試題參考”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 免费在线观看毛片 | 九九综合九九综合 | 97av视频 | 免费看的黄色大片 | 老司机免费午夜精品视频 | 一级一级人与动毛片 | 看片网站免费 | 曰批全过程免费视频播放网站 | 91人人草| 天天摸日日摸人人看 | 黄色一级片在线免费观看 | 黄色免费网址在线观看 | 97久久人人 | 老司机在线永久免费视频观看 | 福利一区二区在线观看 | 91久久人澡人人添人人爽 | 亚洲精品网站在线观看不卡无广告 | 好男人www社区资源免费观看 | 97人人爽人人爽人人人爽 | 亚洲日本在线看片 | 免费在线你懂的 | 色片在线看 | 欧美a在线播放 | 亚洲国产精品高清在线一区 | 激情爽毛片私人影院 | 午夜婷婷网| 久久久久无码国产精品一区 | 欧美精选欧美极品 | 国产成 人 综合 亚洲绿色 | 久久夜夜视频 | 欧美性与交视频在线观看 | 本道在线 | 亚洲欧美日韩综合精品网 | 在线观看视频亚洲 | 香蕉国产精品 | 一本在线免费视频 | 国产性片在线 | 九九热免费在线视频 | 欧美日韩在线永久免费播放 | 日本一区二区三区久久 | 亚洲高清在线看 |