大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

美團(tuán)java面試題參考

更新時(shí)間:2020-06-05 11:08:58 來源:動力節(jié)點(diǎn) 瀏覽2676次

相信大家對美團(tuán)已經(jīng)非常熟悉了,美團(tuán)近年來發(fā)展的越來越好。作為互聯(lián)網(wǎng)企業(yè),美團(tuán)對java開發(fā)人才的需求也是非常大,而且待遇也是不錯(cuò)的,因此很多小伙伴也都想學(xué)習(xí)java進(jìn)入美團(tuán)工作。美團(tuán)在招聘人才的時(shí)候也是有面試的,動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編來給大家一些美團(tuán)java面試題參考,希望對大家有所幫助。

24 拷貝.jpg

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

正確答案:11.

考察知識點(diǎn):&和&&;|和||

&和&&:

共同點(diǎn):兩者都可做邏輯運(yùn)算符。它們都表示運(yùn)算符的兩邊都是true時(shí),結(jié)果為true;

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

|和||:

共同點(diǎn):兩者都可做邏輯運(yùn)算符。它們都表示運(yùn)算符的兩邊任意一邊為true,結(jié)果為true,兩邊都不是true,結(jié)果就為false;

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

回到本題:

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

2.說一下轉(zhuǎn)發(fā)(Forward)和重定向(Redirect)的區(qū)別

轉(zhuǎn)發(fā)是服務(wù)器行為,重定向是客戶端行為。

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

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

重定向(Redirect) 是利用服務(wù)器返回的狀態(tài)嗎來實(shí)現(xiàn)的??蛻舳藶g覽器請求服務(wù)器的時(shí)候,服務(wù)器會返回一個(gè)狀態(tài)碼。服務(wù)器通過HttpServletRequestResponse的setStatus(int status)方法設(shè)置狀態(tài)碼。如果服務(wù)器返回301或者302,則瀏覽器會到新的網(wǎng)址重新請求該資源。

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

總體來說分為以下幾個(gè)過程:

  • DNS解析
  • TCP連接
  • 發(fā)送HTTP請求
  • 服務(wù)器處理請求并返回HTTP報(bào)文
  • 瀏覽器解析渲染頁面
  • 連接結(jié)束

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

為了準(zhǔn)確無誤地把數(shù)據(jù)送達(dá)目標(biāo)處,TCP協(xié)議采用了三次握手策略。

為什么要三次握手

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

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

第二次握手:Client 確認(rèn)了:自己發(fā)送、接收正常,對方發(fā)送、接收正常;Server 確認(rèn)了:自己接收正常,對方發(fā)送正常

第三次握手:Client 確認(rèn)了:自己發(fā)送、接收正常,對方發(fā)送、接收正常;Server 確認(rèn)了:自己發(fā)送、接收正常,對方發(fā)送接收正常

所以三次握手就能確認(rèn)雙發(fā)收發(fā)功能都正常,缺一不可。

為什么要傳回 SYN

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

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

傳了 SYN,為啥還要傳 ACK

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

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

客戶端-發(fā)送一個(gè) FIN,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送服務(wù)器-收到這個(gè) FIN,它發(fā)回一 個(gè) ACK,確認(rèn)序號為收到的序號加1 。和 SYN 一樣,一個(gè) FIN 將占用一個(gè)序號服務(wù)器-關(guān)閉與客戶端的連接,發(fā)送一個(gè)FIN給客戶端客戶端-發(fā)回 ACK 報(bào)文確認(rèn),并將確認(rèn)序號設(shè)置為收到序號加1.

為什么要四次揮手

任何一方都可以在數(shù)據(jù)傳送結(jié)束后發(fā)出連接釋放的通知,待對方確認(rèn)后進(jìn)入半關(guān)閉狀態(tài)。當(dāng)另一方也沒有數(shù)據(jù)再發(fā)送的時(shí)候,則發(fā)出連接釋放通知,對方確認(rèn)后就完全關(guān)閉了TCP連接。

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

5.IP地址與MAC地址的區(qū)別

IP地址是指互聯(lián)網(wǎng)協(xié)議地址(Internet Protocol Address)IP Address的縮寫。IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺主機(jī)分配一個(gè)邏輯地址,以此來屏蔽物理地址的差異。

MAC 地址又稱為物理地址、硬件地址,用來定義網(wǎng)絡(luò)設(shè)備的位置。網(wǎng)卡的物理地址通常是由網(wǎng)卡生產(chǎn)廠家寫入網(wǎng)卡的,具有全球唯一性。MAC地址用于在網(wǎng)絡(luò)中唯一標(biāo)示一個(gè)網(wǎng)卡,一臺電腦會有一或多個(gè)網(wǎng)卡,每個(gè)網(wǎng)卡都需要有一個(gè)唯一的MAC地址。

6.HTTP請求、響應(yīng)報(bào)文格式

HTTP請求報(bào)文主要由請求行、請求頭部、請求正文3部分組成

HTTP響應(yīng)報(bào)文主要由狀態(tài)行、響應(yīng)頭部、響應(yīng)正文3部分組成

7.為什么要使用索引?索引這么多優(yōu)點(diǎn),為什么不對表中的每一個(gè)列創(chuàng)建一個(gè)索引呢?索引是如何提高查詢速度的?說一下使用索引的注意事項(xiàng)?Mysql索引主要使用的兩種數(shù)據(jù)結(jié)構(gòu)?什么是覆蓋索引?

為什么要使用索引?

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

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

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

(4)將隨機(jī)IO變?yōu)轫樞騃O

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

索引這么多優(yōu)點(diǎn),為什么不對表中的每一個(gè)列創(chuàng)建一個(gè)索引呢?

(1)當(dāng)對表中的數(shù)據(jù)進(jìn)行增加、刪除和修改的時(shí)候,索引也要動態(tài)的維護(hù),這樣就降低了數(shù)據(jù)的維護(hù)速度。

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

(3)創(chuàng)建索引和維護(hù)索引要耗費(fèi)時(shí)間,這種時(shí)間隨著數(shù)據(jù)量的增加而增加

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

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

說一下使用索引的注意事項(xiàng)

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

(2)在使用InnoDB時(shí)使用與業(yè)務(wù)無關(guān)的自增主鍵作為主鍵,即使用邏輯主鍵,而不要使用業(yè)務(wù)主鍵。

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

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

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

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

Mysql索引主要使用的哪兩種數(shù)據(jù)結(jié)構(gòu)?

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

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

什么是覆蓋索引?

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

8.進(jìn)程與線程的區(qū)別是什么?進(jìn)程間的幾種通信方式說一下?線程間的幾種通信方式知道不?

進(jìn)程與線程的區(qū)別是什么?

線程與進(jìn)程相似,但線程是一個(gè)比進(jìn)程更小的執(zhí)行單位。一個(gè)進(jìn)程在其執(zhí)行的過程中可以產(chǎn)生多個(gè)線程。與進(jìn)程不同的是同類的多個(gè)線程共享同一塊內(nèi)存空間和一組系統(tǒng)資源,所以系統(tǒng)在產(chǎn)生一個(gè)線程,或是在各個(gè)線程之間作切換工作時(shí),負(fù)擔(dān)要比進(jìn)程小得多,也正因?yàn)槿绱?,線程也被稱為輕量級進(jìn)程。另外,也正是因?yàn)楣蚕碣Y源,所以線程中執(zhí)行時(shí)一般都要進(jìn)行同步和互斥??偟膩碚f,進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。

進(jìn)程間的幾種通信方式說一下?

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

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

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

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

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

套接字(socket):socket,即套接字是一種通信機(jī)制,憑借這種機(jī)制,客戶/服務(wù)器(即要進(jìn)行通信的進(jìn)程)系統(tǒng)的開發(fā)工作既可以在本地單機(jī)上進(jìn)行,也可以跨網(wǎng)絡(luò)進(jìn)行。也就是說它可以讓不在同一臺計(jì)算機(jī)但通過網(wǎng)絡(luò)連接計(jì)算機(jī)上的進(jìn)程進(jìn)行通信。也因?yàn)檫@樣,套接字明確地將客戶端和服務(wù)器區(qū)分開來。

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

(1)鎖機(jī)制

互斥鎖:提供了以排它方式阻止數(shù)據(jù)結(jié)構(gòu)被并發(fā)修改的方法。

讀寫鎖:允許多個(gè)線程同時(shí)讀共享數(shù)據(jù),而對寫操作互斥。

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

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

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

線程間通信的主要目的是用于線程同步,所以線程沒有象進(jìn)程通信中用于數(shù)據(jù)交換的通信機(jī)制。

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

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

• 對于頻繁使用的對象,可以省略創(chuàng)建對象所花費(fèi)的時(shí)間,這對于那些重量級對象而言,是非??捎^的一筆系統(tǒng)開銷;

• 由于 new 操作的次數(shù)減少,因而對系統(tǒng)內(nèi)存的使用頻率也會降低,這將減輕 GC 壓力,縮短 GC 停頓時(shí)間。

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

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

靜態(tài)內(nèi)部類方式

靜態(tài)內(nèi)部實(shí)現(xiàn)的單例是懶加載的且線程安全。

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

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 中,那些組成應(yīng)用程序的主體及由 Spring IOC 容器所管理的對象,被稱之為 bean。簡單地講,bean 就是由 IOC 容器初始化、裝配及管理的對象,除此之外,bean 就與應(yīng)用程序中的其他對象沒有什么區(qū)別了。而 bean 的定義以及 bean 相互間的依賴關(guān)系將通過配置元數(shù)據(jù)來描述。

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

以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“美團(tuán)java面試題參考”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 最新99国产成人精品视频免费 | 亚洲国产成a人v在线 | 色偷偷精品视频在线播放 | 亚洲成人毛片 | 91在线视频播放 | 日韩不卡在线 | 国产在线观看精品香蕉v区 国产在线观看美女福利精 国产在线观看午夜不卡 | 伊人狼人视频 | 综合色在线 | 久草视频免费播放 | 中文字幕国产精品 | 亚洲综合免费 | 有码中文字幕在线观看 | 日韩经典欧美精品一区 | 久久不卡一区二区三区 | 精品九九久久 | 亚洲美色综合天天久久综合精品 | 欧美韩一级片 | 国产成人麻豆精品video | 欧美色爱综合 | 九九精品九九 | 91视频久久久久 | 国产区视频在线观看 | 伊人久久成人 | 欧美天天性影院 | h片在线观看免费 | 在线色片 | 欧美精品在线一区二区三区 | 国产高清国内精品福利 | 日韩欧美在线中文字幕 | 天海翼一区二区在线观看 | 不一样的天空在线高清观看 | 国语精品91自产拍在线观看二区 | 国产一区二区在线视频 | 欧美干干| 91色蝌蚪 | 久久国内精品自在自线观看 | 人人干人人模 | 久久夜靖品 | 久久www免费人成_看片美女图 | 天天色天天拍 |