Error,ExceptionError:嚴重問題,例如內存溢出Exception->運?時異常:RuntimeException,編譯時異常AWTError1、?絡基礎問題TCP和UDP的區別,TCP為什么是三次握?,不是兩 " />
  • <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            騰訊面試題

            更新時間:2023-03-08 05:52:44 閱讀: 評論:0

            電腦加密-玉蘭花期

            騰訊面試題
            2023年3月8日發(作者:電腦操作入門)

            騰訊的Java?試題整合

            ?錄

            騰訊Java?試題:

            1、說說Java中異常的分類。

            答:異常分類:

            Throwable->Error,Exception

            Error:嚴重問題,例如內存溢出

            Exception->運?時異常:RuntimeException,編譯時異常

            AWTError

            1、?絡基礎問題

            TCP和UDP的區別,TCP為什么是三次握?,不是兩次。

            答:1、因為tcp是全雙?協議,區別在于前者可靠,后者不可靠,以及效率更?。

            Dubbo?試題

            1、dubbo和dubbox之間的區別?

            答:Dubbox和Dubbo本質上沒有區別,名字的含義擴展了Dubbo?已,以下擴展出來的功能

            ?持REST風格遠程調?(HTTP+JSON/XML);

            ?持基于Kryo和FST的Java?效序列化實現;

            ?持基于Jackson的JSON序列化;

            ?持基于嵌?式Tomcat的HTTPremoting體系;

            升級Spring?3.x;

            升級ZooKeeper客戶端;

            ?持完全基于Java代碼的Dubbo配置;

            2、Dubbo?試題:?般使?什么注冊中??還有別的選擇嗎?

            答:Dubbo?般?zookeeper做注冊中?

            還可以?:Redis,數據庫,consul

            JavaList?試題

            1、ArrayList和LinkedList的區別?分別?在什么場景?

            答:①ArrayList和LinkedList可想從名字分析,它們?個是Array(動態數組)的數據結構,?個是Link(鏈表)的數據結構,此外,它們兩個

            都是對List接?的實現。

            前者是數組隊列,相當于動態數組;后者為雙向鏈表結構,也可當作堆棧、隊列、雙端隊列

            ②當隨機訪問List時(get和t操作),ArrayList?LinkedList的效率更?,因為LinkedList是線性的數據存儲?式,所以需要移動指針

            從前往后依次查找。

            ③當對數據進?增加和刪除的操作時(add和remove操作),LinkedList?ArrayList的效率更?,因為ArrayList是數組,所以在其中進?

            增刪操作時,會對操作點之后所有數據的下標索引造成影響,需要進?數據的移動。

            ④從利?效率來看,ArrayList?由性較低,因為它需要?動的設置固定??的容量,但是它的使??較?便,只需要創建,然后添加數

            據,通過調?下標進?使?;?LinkedList?由性較?,能夠動態的隨數據量的變化?變化,但是它不便于使?。

            ⑤ArrayList主要控件開銷在于需要在lList列表預留?定空間;?LinkList主要控件開銷在于需要存儲結點信息以及結點指針信息。

            場景:

            鏈表,插?刪除快,查找修改慢。適?于頻繁增刪的場景。

            數組,查找快,插?刪除慢。適?于頻繁查找和修改的場景。

            2、怎么給List排序?

            答:List如何排序:

            ①:使?默認正序,可以傳第?個參數?定義排序

            ②:?定義bean實現Comparable接?。

            ③:實現Comparator接??定義?較器

            JavaMap集合?試題

            1、Collection集合接?和Map接?有什么關系?

            答:沒有直接關系,但是?些?類會有依賴,Collection是最基本的集合接?,聲明了適?于JAVA集合(只包括Set和List)的通??法。

            Map接?并不是Collection接?的?接?,但是它仍然被看作是Collection框架的?部分。

            2、你都知道哪些常?的Map集合?

            答:HashMap、HashTable、TreeMap、LinkedHashMap

            Spring?試題

            1、什么是Spring的內部bean?

            答:當?個bean只能被某?個類使?時,稱該bean為內部bean。

            2、為什么說Spring是?個容器?

            答:Spring的核?理念就是更?便地管理JavaBean,?被管理的JavaBean存緩存在?個Map中,這個Map就可以理解為?來裝

            JavaBean的容器,即IOC容器

            zookeeper?試題

            1、zookeeper是什么框架?

            答:ZooKeeper是?個分布式的,開放源碼的分布式應?程序協調服務

            JVM?試題:

            1、說說Java虛擬機的?命周期及體系結構。

            2、Java是如何實現跨平臺的?

            注意:跨平臺的是Java程序,?不是JVM。JVM是?C/C++開發的,是編譯后的機器碼,不能跨平臺,不同平臺下需要安裝不同版本

            的JVM

            答:我們編寫的Java源碼,編譯后會?成?種.class?件,稱為字節碼?件。Java虛擬機(JVM)就是負責將字節碼?件翻譯成特定平

            臺下的機器碼然后運?,也就是說,只要在不同平臺上安裝對應的JVM,就可以運?字節碼?件,運?我們編寫的Java程序。

            ?這個過程,我們編寫的Java程序沒有做任何改變,僅僅是通過JVM這?“中間層”,就能在不同平臺上運?,真正實現了“?次編

            譯,到處運?”的?的。

            3、什么是JVM?

            解析:不僅僅是基本概念,還有JVM的作?。

            答:JVM,即JavaVirtualMachine,Java虛擬機。它通過模擬?個計算機來達到?個計算機所具有的的計算功能。JVM能夠跨計算機

            體系結構來執?Java字節碼,主要是由于JVM屏蔽了與各個計算機平臺相關的軟件或者硬件之間的差異,使得與平臺相關的耦合統?由

            JVM提供者來實現。

            4、JVM由哪些部分組成?

            解析:這是對JVM體系結構的考察

            答:JVM的結構基本上由4部分組成:

            類加載器,在JVM啟動時或者類運?時將需要的class加載到JVM中

            執?引擎,執?引擎的任務是負責執?class?件中包含的字節碼指令,相當于實際機器上的CPU

            內存區,將內存劃分成若?個區以模擬實際機器上的存儲、記錄和調度功能模塊,如實際機器上的各種功能的寄存器或者PC指針的記錄器

            本地?法調?,調?C或C++實現的本地?法的代碼返回結果

            5、類加載器是有了解嗎?

            解析:底層原理的考察,其中涉及到類加載器的概念,功能以及?些底層的實現。

            答:顧名思義,類加載器(classloader)?來加載Java類到Java虛擬機中。?般來說,Java虛擬機使?Java類的?式如下:Java

            源程序(.java?件)在經過Java編譯器編譯之后就被轉換成Java字節代碼(.class?件)。

            類加載器負責讀取Java字節代碼,并轉換成類的?個實例。每個這樣的實例?來表??個Java類。通過此實例的

            newInstance()?法就可以創建出該類的?個對象。實際的情況可能更加復雜,?如Java字節代碼可能是通過?具動態?成的,也可能是

            通過?絡下載的。

            6、Java虛擬機是如何判定兩個Java類是相同的?

            答:Java虛擬機不僅要看類的全名是否相同,還要看加載此類的類加載器是否?樣。只有兩者都相同的情況,才認為兩個類是相同的。即

            便是同樣的字節代碼,被不同的類加載器加載之后所得到的類,也是不同的。?如?個Java類,編譯之后?成了

            字節代碼?件。兩個不同的類加載器ClassLoaderA和ClassLoaderB分別讀取了這個?件,并定義出兩個

            類的實例來表?這個類。這兩個實例是不相同的。對于Java虛擬機來說,它們是不同的類。試圖對這兩個類的對象進?相

            互賦值,會拋出運?時異常ClassCastException。

            7、類似-Xms、-Xmn這些參數的含義:

            答:堆內存分配:

            JVM初始分配的內存由-Xms指定,默認是物理內存的1/64

            JVM最?分配的內存由-Xmx指定,默認是物理內存的1/4

            默認空余堆內存?于40%時,JVM就會增?堆直到-Xmx的最?限制;空余堆內存?于70%時,JVM會減少堆直到-Xms的最?限制。

            因此服務器?般設置-Xms、-Xmx相等以避免在每次GC后調整堆的??。對象的堆內存由稱為垃圾回收器的?動內存管理系統回收。

            ?堆內存分配:

            JVM使?-XX:PermSize設置?堆內存初始值,默認是物理內存的1/64;

            由XX:MaxPermSize設置最??堆內存的??,默認是物理內存的1/4。

            -Xmn2G:設置年輕代??為2G。

            -XX:SurvivorRatio,設置年輕代中Eden區與Survivor區的?值。

            ()和wait(n)、wait()的區別?

            sleep?法:是Thread類的靜態?法,當前線程將睡眠n毫秒,線程進?阻塞狀態。當睡眠時間到了,會解除阻塞,進?可運?狀態,

            等待CPU的到來。睡眠不釋放鎖(如果有的話);

            wait?法:是Object的?法,必須與synchronized關鍵字?起使?,線程進?阻塞狀態,當notify或者notifyall被調?后,會解除

            阻塞。但是,只有重新占?互斥鎖之后才會進?可運?狀態。睡眠時,釋放互斥鎖。

            2、synchronized關鍵字?

            1.答:底層實現:進?時,執?monitorenter,將計數器+1,釋放鎖monitorexit時,計數器-1;

            當?個線程判斷到計數器為0時,則當前鎖空閑,可以占?;反之,當前線程進?等待狀態。

            含義:(monitor機制)

            Synchronized是在加鎖,加對象鎖。對象鎖是?種重量鎖(monitor),synchronized的鎖機制會根據線程競爭情況在運?時會有偏向

            鎖(單?線程)、輕量鎖(多個線程訪問synchronized區域)、對象鎖(重量鎖,多個線程存在競爭的情況)、?旋鎖等。

            該關鍵字是?個?種鎖的封裝。

            3、volatile關鍵字?

            答:該關鍵字可以保證可見性不保證原?性。

            功能:

            主內存和?作內存,直接與主內存產?交互,進?讀寫操作,保證可見性;

            禁?JVM進?的指令重排序。

            解析:關于指令重排序的問題,可以查閱DCL雙檢鎖失效相關資料。

            4、volatile能使得?個?原?操作變成原?操作嗎?

            答:能。

            ?個典型的例?是在類中有?個long類型的成員變量。如果你知道該成員變量會被多個線程訪問,如計數器、價格等,你最好是將其設置

            為volatile。為什么?因為Java中讀取long類型變量不是原?的,需要分成兩步,如果?個線程正在修改該long變量的值,另?個線程

            可能只能看到該值的?半(前32位)。但是對?個volatile型的long或double變量的讀寫是原?。

            5、volatile修飾符的有過什么實踐?

            ?種實踐是?volatile修飾long和double變量,使其能按原?類型來讀寫。double和long都是64位寬,因此對這兩種類型的讀是分

            為兩部分的,第?次讀取第?個32位,然后再讀剩下的32位,這個過程不是原?的,但Java中volatile型的long或double變量的

            讀寫是原?的。

            volatile修復符的另?個作?是提供內存屏障(memorybarrier),例如在分布式框架中的應?。簡單的說,就是當你寫?個volatile變

            量之前,Java內存模型會插??個寫屏障(writebarrier),讀?個volatile變量之前,會插??個讀屏障(readbarrier)。意思就是

            說,在你寫?個volatile域時,能保證任何線程都能看到你寫的值,同時,在寫之前,也能保證任何數值的更新對所有線程是可見的,因為

            內存屏障會將其他所有寫的值更新到緩存。

            6、ThreadLocal(線程局部變量)關鍵字?

            答:當使?ThreadLocal維護變量時,其為每個使?該變量的線程提供獨?的變量副本,所以每?個線程都可以獨?的改變??的副本,

            ?不會影響其他線程對應的副本。

            ThreadLocal內部實現機制:

            每個線程內部都會維護?個類似HashMap的對象,稱為ThreadLocalMap,?邊會包含若?了Entry(K-V鍵值對),相應的線程被稱

            為這些Entry的屬主線程;

            Entry的Key是?個ThreadLocal實例,Value是?個線程特有對象。Entry的作?即是:為其屬主線程建?起?個ThreadLocal實例

            與?個線程特有對象之間的對應關系;

            Entry對Key的引?是弱引?;Entry對Value的引?是強引?。

            7、我們為什么要使?線程池?核?線程池內部實現了解嗎?

            答:

            減少創建和銷毀線程的次數,每個?作線程都可以被重復利?,可執?多個任務。

            可以根據系統的承受能?,調整線程池中?作線程的數?,放置因為消耗過多的內存,?把服務器累趴下(每個線程?約需要1MB內存,

            線程開的越多,消耗的內存也就越?,最后死機)

            ?試官:核?線程池內部實現了解嗎?

            答:對于核?的?個線程池,?論是newFixedThreadPool()?法,newSingleThreadExecutor()還是newCachedThreadPool()?

            法,雖然看起來創建的線程有著完全不同的功能特點,但其實內部實現均使?了ThreadPoolExecutor實現,其實都只是

            ThreadPoolExecutor類的封裝。

            1.解釋AOP模塊

            AOP(Aspect-OrientedProgramming)指?種程序設計范型,該范型以?種稱為切?(aspect)的語?構造為基礎,切?是?種新的

            模塊化機制,?來描述分散在對象、類或?法中的橫切關注點(crosscuttingconcern)。

            2.有哪些不同類型的IOC(依賴注?)?式?

            構造器依賴注?:構造器依賴注?通過容器觸發?個類的構造器來實現的,該類有?系列參數,每個參數代表?個對其他類的依賴。

            Setter?法注?:Setter?法注?是容器通過調??參構造器或?參static???法實例化bean之后,調?該bean的tter?法,即實現

            了基于tter的依賴注?。

            3.你怎樣定義類的作?域?

            當定義?個在Spring?,我們還能給這個bean聲明?個作?域。它可以通過bean定義中的scope屬性來定義。如,當Spring要在需要的

            時候每次?產?個新的bean實例,bean的scope屬性被指定為prototype。另???,?個bean每次使?的時候必須返回同?個實例,這

            個bean的scope屬性必須設為singleton。

            框架的事務管理有哪些優點?

            它為不同的事務API如JTA,JDBC,Hibernate,JPA和JDO,提供?個不變的編程模式。

            它為編程式事務管理提供了?套簡單的API?不是?些復雜的事務API如

            它?持聲明式事務管理。

            它和Spring各種數據訪問抽象層很好得集成。

            5.什么是SpringMVC框架的控制器?

            控制器提供?個訪問應?程序的?為,此?為通常通過服務接?實現。控制器解析?戶輸?并將其轉換為?個由視圖呈現給?戶的模型。

            Spring??個?常抽象的?式實現了?個控制層,允許?戶創建多種?途的控制器。

            6.在SpringAOP中,關注點和橫切關注的區別是什么?

            關注點是應?中?個模塊的?為,?個關注點可能會被定義成?個我們想實現的?個功能。

            橫切關注點是?個關注點,此關注點是整個應?都會使?的功能,并影響整個應?,?如?志,安全和數據傳輸,?乎應?的每個模塊都需

            要的功能。因此這些都屬于橫切關注點。

            1.使?Spring框架的好處是什么?

            答:輕量:Spring是輕量的,基本的版本?約2MB。

            控制反轉:Spring通過控制反轉實現了松散耦合,對象們給出它們的依賴,?不是創建或查找依賴的對象們。

            ?向切?的編程(AOP):Spring?持?向切?的編程,并且把應?業務邏輯和系統服務分開。

            容器:Spring包含并管理應?中對象的?命周期和配置。

            MVC框架:Spring的WEB框架是個精?設計的框架,是Web框架的?個很好的替代品。

            事務管理:Spring提供?個持續的事務管理接?,可以擴展到上?本地事務下?全局事務(JTA)。

            異常處理:Spring提供?便的API把具體技術相關的異常(?如由JDBC,HibernateorJDO拋出的)轉化為?致的unchecked異常。

            2、Spring由哪些模塊組成?

            答:以下是Spring框架的基本模塊:

            Coremodule

            Beanmodule

            Contextmodule

            ExpressionLanguagemodule

            JDBCmodule

            ORMmodule

            OXMmodule

            JavaMessagingService(JMS)module

            Transactionmodule

            Webmodule

            Web-Servletmodule

            Web-Strutsmodule

            Web-Portletmodule

            3、BeanFactory–BeanFactory實現舉例。

            答:Bean??是??模式的?個實現,提供了控制反轉功能,?來把應?的配置和依賴從正真的應?代碼中分離。

            最常?的BeanFactory實現是XmlBeanFactory類。

            4、什么是SpringIOC容器?

            答:SpringIOC負責創建對象,管理對象(通過依賴注?(DI),裝配對象,配置對象,并且管理這些對象的整個?命周期。

            5、IOC的優點是什么?

            答:IOC或依賴注?把應?的代碼量降到最低。它使應?容易測試,單元測試不再需要單例和JNDI查找機制。最?的代價和最?的侵?性

            使松散耦合得以實現。IOC容器?持加載服務時的餓漢式初始化和懶加載。

            6、什么是基于注解的容器配置?

            答:相對于XML?件,注解型的配置依賴于通過字節碼元數據裝配組件,??尖括號的聲明。

            開發者通過在相應的類,?法或屬性上使?注解的?式,直接組件類中進?配置,?不是使?xml表述bean的裝配關系。

            1、什么是SpringMVC框架的控制器?

            答:控制器提供?個訪問應?程序的?為,此?為通常通過服務接?實現。控制器解析?戶輸?并將其轉換為?個由視圖呈現給?戶的模

            型。Spring??個?常抽象的?式實現了?個控制層,允許?戶創建多種?途的控制器。

            2、什么是基于注解的容器配置?

            答:相對于XML?件,注解型的配置依賴于通過字節碼元數據裝配組件,??尖括號的聲明。

            開發者通過在相應的類,?法或屬性上使?注解的?式,直接組件類中進?配置,?不是使?xml表述bean的裝配關系。

            3、怎樣開啟注解裝配?

            答:注解裝配在默認情況下是不開啟的,為了使?注解裝配,我們必須在Spring配置?件中配置元素。

            4、@Required注解

            答:這個注解表明bean的屬性必須在配置的時候設置,通過?個bean定義的顯式的屬性值或通過?動裝配,若@Required注解的bean屬

            性未被設置,容器將拋出BeanInitializationException。

            5、@Autowired注解

            答:@Autowired注解提供了更細粒度的控制,包括在何處以及如何完成?動裝配。它的?法和@Required?樣,修飾tter?法、構造

            器、屬性或者具有任意名稱和/或多個參數的PN?法。

            6、@Qualifier注解

            答:當有多個相同類型的bean卻只有?個需要?動裝配時,將@Qualifier注解和@Autowire注解結合使?以消除這種混淆,指定需要裝

            配的確切的bean。

            Spring數據訪問

            1、什么是Mybatis?

            (1)Mybatis是?個半ORM(對象關系映射)框架,它內部封裝了JDBC,開發時只需要關注SQL語句本?,不需要花費精?去處理加載

            驅動、創建連接、創建statement等繁雜的過程。程序員直接編寫原?態sql,可以嚴格控制sql執?性能,靈活度?。

            (2)MyBatis可以使?XML或注解來配置和映射原?信息,將POJO映射成數據庫中的記錄,避免了?乎所有的JDBC代碼和?動設

            置參數以及獲取結果集。

            (3)通過xml?件或注解的?式將要執?的各種statement配置起來,并通過java對象和statement中sql的動態參數進?映射?成最終

            執?的sql語句,最后由mybatis框架執?sql并將結果映射為java對象并返回。(從執?sql到返回result的過程)。

            2、Mybaits的優點?

            (1)基于SQL語句編程,相當靈活,不會對應?程序或者數據庫的現有設計造成任何影響,SQL寫在XML?,解除sql與程序代碼的耦

            合,便于統?管理;提供XML標簽,?持編寫動態SQL語句,并可重?。

            (2)與JDBC相?,減少了50%以上的代碼量,消除了JDBC?量冗余的代碼,不需要?動開關連接;

            (3)很好的與各種數據庫兼容(因為MyBatis使?JDBC來連接數據庫,所以只要JDBC?持的數據庫MyBatis都?持)。

            (4)能夠與Spring很好的集成;

            (5)提供映射標簽,?持對象與數據庫的ORM字段關系映射;提供對象關系映射標簽,?持對象關系組件維護。

            3、MyBatis框架的缺點?

            (1)SQL語句的編寫?作量較?,尤其當字段多、關聯表多時,對開發?員編寫SQL語句的功底有?定要求。

            (2)SQL語句依賴于數據庫,導致數據庫移植性差,不能隨意更換數據庫。

            4、MyBatis框架適?場合?

            (1)MyBatis專注于SQL本?,是?個?夠靈活的DAO層解決?案。

            (2)對性能的要求很?,或者需求變化較多的項?,如互聯?項?,MyBatis將是不錯的選擇。

            5、MyBatis與Hibernate有哪些不同?

            (1)Mybatis和hibernate不同,它不完全是?個ORM框架,因為MyBatis需要程序員??編寫Sql語句。

            (2)Mybatis直接編寫原?態sql,可以嚴格控制sql執?性能,靈活度?,?常適合對關系數據模型要求不?的軟件開發,因為這類軟件

            需求變化頻繁,?但需求變化要求迅速輸出成果。但是靈活的前提是mybatis?法做到數據庫?關性,如果需要實現?持多種數據庫的軟

            件,則需要?定義多套sql映射?件,?作量?。

            (3)Hibernate對象/關系映射能?強,數據庫?關性好,對于關系模型要求?的軟件,如果?hibernate開發可以節省很多代碼,提?效

            率。

            6、Mybatis是如何進?分頁的?分頁插件的原理是什么?

            Mybatis使?RowBounds對象進?分頁,它是針對ResultSet結果集執?的內存分頁,??物理分頁。可以在sql內直接書寫帶有物理分頁

            的參數來完成物理分頁功能,也可以使?分頁插件來完成物理分頁。

            分頁插件的基本原理是使?Mybatis提供的插件接?,實現?定義插件,在插件的攔截?法內攔截待執?的sql,然后重寫sql,根據

            dialect??,添加對應的物理分頁語句和物理分頁參數。

            1、Mybatis動態sql有什么??執?原理?有哪些動態sql?

            答:Mybatis動態sql可以在Xml映射?件內,以標簽的形式編寫動態sql,執?原理是根據表達式的值完成邏輯判斷并動態拼接sql的功

            能。

            Mybatis提供了9種動態sql標簽:trim|where|t|foreach|if|choo|when|otherwi|bind。

            2、Xml映射?件中,除了常見的lect|inrt|updae|delete標簽之外,還有哪些標簽?

            答:,加上動態sql的9個標簽,其中為sql?段標簽,通過

            標簽引?sql?段,為不?持?增的主鍵?成策略標簽。

            3、為什么說Mybatis是半?動ORM映射?具?它與全?動的區別在哪??

            答:Hibernate屬于全?動ORM映射?具,使?Hibernate查詢關聯對象或者關聯集合對象時,可以根據對象關系模型直接獲取,所以它是

            全?動的。?Mybatis在查詢關聯對象或關聯集合對象時,需要?動編寫sql來完成,所以,稱之為半?動ORM映射?具。

            4、MyBatis實現?對?有?種?式?具體怎么操作的?

            答:有聯合查詢和嵌套查詢,聯合查詢是?個表聯合查詢,只查詢?次,通過在resultMap??配置association節點配置?對?的類就可以完

            成;

            嵌套查詢是先查?個表,根據這個表??的結果的外鍵id,去再另外?個表??查詢數據,也是通過association配置,但另外?個表的查詢

            通過lect屬性配置。

            5、MyBatis實現?對多有?種?式,怎么操作的?

            答:有聯合查詢和嵌套查詢。聯合查詢是?個表聯合查詢,只查詢?次,通過在resultMap??的collection節點配置?對多的類就可以完

            成;嵌套查詢是先查?個表,根據這個表??的結果的外鍵id,去再另外?個表??查詢數據,也是通過配置collection,但另外?個表的查詢通

            過lect節點配置

            6、Mybatis的?級、?級緩存:

            答:1)?級緩存:基于PerpetualCache的HashMap本地緩存,其存儲作?域為Session,當Sessionflush或clo之后,該

            Session中的所有Cache就將清空,默認打開?級緩存。

            2)?級緩存與?級緩存其機制相同,默認也是采?PerpetualCache,HashMap存儲,不同在于其存儲作?域為

            Mapper(Namespace),并且可?定義存儲源,如Ehcache。默認不打開?級緩存,要開啟?級緩存,使??級緩存屬性類需要實現

            Serializable序列化接?(可?來保存對象的狀態),可在它的映射?件中配置

            3)對于緩存數據更新機制,當某?個作?域(?級緩存Session/?級緩存Namespaces)的進?了C/U/D操作后,默認該作?域下所有

            lect中的緩存將被clear。

            7、equal和hashcode作?和區別?

            答:?先,我們要明?hashCode()和equals()?法的作?是什么,然后才能說他的區別,說了區別之后在說明使?的時候需要注意的地

            ?,這樣的回答思路基本是OK的。

            ?、hahsCode()和equals()的作?是什么?

            hahsCode()和equals()的作?其實是?樣的,?的都是為了再java???較兩個對象是否相等?致

            ?、hahsCode()和equals()的區別是什么?

            我們可以從兩個?度分別介紹他們的區別:?個是性能,?個是可靠性。他們的主要區別體現在這?

            ()既然已經實現?較兩個對象的功能了,為什么還需要hashCode()呢?

            因為重寫的equals()??般?較的較為全?和復雜(它會對這個對象內所以成員變量??進??較),這樣效率很低,?通過hashCode()對

            ?,則只要?成?個hash值就能?較了,效率很?

            2.那hashCode的效率這么?,為啥還要?equals()呢?

            因為hashCode()并不是完全可靠,?常有可能的情況是,兩個完全不同的對象的hash值卻是?樣的。

            所以會有下?三個重要的結論:

            *equals()相等的兩個對象他們的hashCode()肯定相等,即equals()絕對可靠。

            *hahsCode()相同的兩個對象,它們的equals()不?定相同。即?hashCode()?較相同的時候不靠譜

            *hashCode()不同的兩個對象,他們的那么equals()肯定不同。即?hashCode()?較不同的時候肯定靠譜

            hashCode()和equals使?的注意事項

            1.對于需要?量并且快速的對?的話如果都?equals()去做顯然效率太低,所以解決?案為:每當需要?較的時候,?先?hahsCode()

            去對?,?如果hashCode()不?樣,則兩個對象肯定不?樣,此時就沒有必要再?equals()?較了;如果hashCode()相同,則這兩個對

            象有可能相同,這時候再去?較這兩個對象的equals(),如若equals()也相同,則表?這兩個真的相同的,這樣既??提?了效率,?保證

            了準確性。

            2.事實上,我們平時?的集合框架中的hashMap、hashSet,hashTable中對key的?較就是使?上述這種?法。

            3.?Obejct默認的equals和HashCode?法返回的是對象的地址相關信息。所以當我們通過new關鍵字創建了兩個內容相同的對象,雖然

            他們的內容相同,但是他們在內存中分配的地址不同,導致它們的hashCode()不同,這肯定不是我們想要的。所以當我們要將某個類應?

            到集合中去的時候,就必須重寫equals()?法和hashCode()?法。

            擴展

            1.阿?巴巴開發規約明確規定:

            *.只要重寫了equals()?法,就必須重寫hashCode()?法

            *.因為Set存儲的是不重復的對象,依據hashCode和equals進?判斷,所以Set存儲的對象必須重寫這兩個?法

            *.如果對象定義為Map的健,那么就必須重寫equals()?法和hashCode()?法

            *.String重寫了equals()?法和hashCode()?法,所以我們可以?常愉快的時候String對象作為key

            2.是不是每個對象都要重寫這兩個?法,到底什么時候重寫?

            *.事實上?般情況下,我們并不需要重寫這兩個?法,只有該類被應?到集合框架中去的時候,才應該重寫。

            3.我能不能值重寫equals()?法,不重寫hashCode()?法?

            *.如果重寫了equals()?法,?如說基于對象的內容實現的,?保留了hashCode()的實現不改變,那么最終出現的情況很可能是,兩個對象

            明明是“相等的”,但是hashCode()卻不?樣,這不是寶寶想要的

            4.為什么需要hashCode

            *.通過hashCode可以提?對?的性能

            1、如何保證單機保證3wtps訪問量?

            答:今天?試被問道?個問題,如何保證單機保證3wtps的訪問量?

            聽到這個問題,第?反應有點蒙,想成了3w的并發量了,想了?下,?前的容器?如tomcat的最?并發量也就?千就扛不住了...

            后來我先說IO模型使?NOI,能夠處理?數據?并發的請求,然后從代碼優化上說要盡量并?處理邏輯,以及優化JVM,調整堆??,減少

            FullGC,使停頓時間減少,最終使每個請求的處理時間減少。

            但是也知道這個說法挺不搭題的....

            后來?試官跟我說從兩??來分析,???是從請求上來說,將多個請求合并成?個請求發送,減少請求次數,???是把請求都改成

            異步的,后臺處理,讓請求過來之后就直接返回成功。

            當時感覺這兩個??說的也沒問題。畢竟第?次出去?試,腦袋???有些蒙了,然后后邊就是隨便聊了?下我個?擅長的??,我就

            說了?下??項?上使?的springCloud,的?些核?組件及注冊中?的實現原理等,然后就沒有然后了...

            感覺這次?試基本是涼了,但是也還好,做好了準備,第?次?試當做總結經驗教訓了吧。

            回來的路上,也?直在思考這個問題,有了?些想法:

            1.?先從題?的說明上,本?存在?些問題,說的是要保證3W的tps,但是如果將請求合并了,是減少了請求次數,但是也打不到3w

            的tps了啊,這樣本?就不符合這個題?的要求了,所以我認為要么修改題?的說明,要么這個3wtps就是?個固定值,?法通過外部優化

            來減少了,只能從系統內部去優化。

            2.然后從系統優化來說,這個題?本?也存在?定的問題,就是這3w的tps到底是峰值流量還是平時流量,是需要同步給出處理結果,

            還是可以接受異步的后續返回處理結果。

            如果是需要同步給出處理結果,那么就只能從業務處理流程上進?優化,也就是盡量把串?的處理流程改成并?的處理流程,把查詢盡量從

            數據庫改到緩存中。但是即使這樣,?個需要同步返回結果的3wtps單機處理,每個請求的處理時間=1%3000≈0.00033秒=0.33微

            妙,感覺在時間上是根本?法處理完?個業務流程的。如果?個業務流程?法處理完的話,那么請求就會出現堆積現象,堆積過多就會出現

            OOM,內存溢出了...所以我個?感覺這個單機3W同步處理的優化是不符合現實的,只能從業務上去處理,盡量把同步的業務邏輯改成異步

            的業務邏輯,即使改成異步的業務邏輯,雖然能夠?撐住3w的tps,但是因為服務的處理速刷?法達到3wtps的處理速度,那么最終會造成

            內存的不斷消耗,最終導致OOM的出現。

            3.看這個tps到底是峰值還是平時了,如果只是峰值3w,平時很低,?且可以使?異步的話,那么就可以使?MQ了,請求過來直接把

            請求發送到MQ中去,不處理業務。然后創建消費者去消費這些消息。達到削峰填??的。

            4.計算?下,如果?個請求的處理時間是10ms,那么單線程每秒的處理速度=1000%10=100個,采?并?處理,如果是?個四核

            ?線程的處理器,理論上創建16個線程去處理,那么每秒的處理速度=100*16=1600個。不知道這樣的計算?法是否正確.

            2、講?下模版模式和策略模式的區別?

            答:模板?法模式的主要思想:定義?個算法流程,將?些特定步驟的具體實現、延遲到?類。使得可以在不改變算法流程的情況下,通過

            不同的?類、來實現“定制”流程中的特定的步驟。

            策略模式的主要思想:使不同的算法可以被相互替換,?不影響客戶端的使?。

            3、redis和MQ如何平滑的擴容與縮容?

            答:MQ的消息是存放在內存或者磁盤中的,在縮減集群數量時,必須要遷移節點的數據。增加節點時,要重新配置集群。這么看來是?法

            平滑縮容和擴容的。

            4、MQ的消息?產?消費速度快得多,有什么解決?案嗎?

            ?產消息?消費速度快得多,這個本?是沒問題的,因為MQ的?個作?就是削峰。

            如果要提?消費速度,可以增加多個消費者

            5、feign如何實現負載均衡,與Ribbon的負載均衡有什么區別?

            答:

            Feign?般?Ribbon來實現負載均衡。

            與Ribbon負載均衡的區別?我覺得2個是不?樣的東西吧,Feign已經包含了Ribbon,需要配合使?,?般?產環境?的是Spring

            Cloud技術來整合的,當然也可以?其他技術來替代。

            Feign作為客戶端

            Ribbon作為負載均衡

            Eureka作為注冊中?

            Zuul作為?關

            Security作為安全OAuth2認證

            ?先得知道Feign和Ribbon是什么,然后具體怎么實現參考?馬哥微服務課程,也可以看官?

            Feign:申明式Web服務客戶端

            申明式:接?聲明、Annotation驅動

            Web服務:HTTP的?式作為通訊協議

            客戶端:?于服務調?的存根

            假設,有?個Java接?UrService,Feign可以將其聲明它是以HTTP?式調?的。

            Ribbon:客戶端負載均衡器,可以對HTTP和TCP客戶端的?為進?控制。

            Java技術、?試、就業交流群:929041174(新群)。

            Java實操項?、學習資料有需求可以加美??師微信備注“111”領取資料哦:

            本文發布于:2023-03-08 05:52:44,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/1678225964130466.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:騰訊面試題.doc

            本文 PDF 下載地址:騰訊面試題.pdf

            下一篇:返回列表
            標簽:騰訊面試題
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 人人妻人人做人人爽| A级孕妇高清免费毛片| 国产日韩午夜视频在线观看| 久久热这里只有精品最新| 国产天美传媒性色av| 国产精品午夜无码AV在线播放| 国产在线中文字幕精品| 97精品伊人久久大香线蕉| 国产精品一起草在线观看| 久久青青草原亚洲AV无码麻豆| 亚洲国产成人AⅤ片在线观看| 亚洲AV福利天堂在线观看| 久久人妻公开中文字幕| 一区二区中文字幕久久| 伊人久久大香线蕉AV色婷婷色| 国产精品自在拍在线播放| 精品精品亚洲高清a毛片| 黄男女激情一区二区三区| 亚洲情综合五月天| 99热久久这里只有精品| 国产拍拍拍无码视频免费| 国产人成午夜免费看| 换着玩人妻中文字幕| 日韩综合夜夜香内射| 国产精品午夜剧场免费观看| 亚洲精品一品二品av| 成人午夜在线观看刺激| 伊人久久婷婷综合五月97色| 影音先锋啪啪av资源网站 | 国产欧美另类久久久精品丝瓜| 亚洲a∨国产av综合av| 免费午夜无码片在线观看影院| 国产明星精品无码AV换脸| 北岛玲精品一区二区三区| 白白发布视频一区二区视频| 亚洲鸥美日韩精品久久| 欧美黑人巨大xxxxx| 亚洲精品国产av一区二区| 国产欧美日韩精品丝袜高跟鞋 | 麻豆国产成人AV在线播放| 亚洲色一色噜一噜噜噜|