1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        五輪阿里面試題及答案

        共 8116字,需瀏覽 17分鐘

         ·

        2020-03-10 23:24

        作者:就這些嗎

        原文鏈接:https://www.jianshu.com/p/c8a271448dcd


        一面
        1. 自我介紹下自己,不超過(guò)3分鐘(實(shí)際上我的自我介紹不到一分鐘)
        2. 你感覺(jué)比本科階段自己進(jìn)步了多少,有哪些進(jìn)步
        3. 研究生期間最大的進(jìn)步是什么
        4. 你覺(jué)得你適合從事哪個(gè)方向的開發(fā)
        5. synchronized與lock的區(qū)別,使用場(chǎng)景??催^(guò)synchronized的源碼沒(méi)
        6. JVM自動(dòng)內(nèi)存管理,Minor GC與Full GC的觸發(fā)機(jī)制
        7. 了解過(guò)JVM調(diào)優(yōu)沒(méi),基本思路是什么
        ????如果CPU使用率較高,GC頻繁且GC時(shí)間長(zhǎng),可能就需要JVM調(diào)優(yōu)了。
        ????基本思路就是讓每一次GC都回收盡可能多的對(duì)象,對(duì)于CMS來(lái)說(shuō),要合理設(shè)置年輕代和年老代的大小。
        8. 該如何確定它們的大小呢?????這是一個(gè)迭代的過(guò)程,可以先采用JVM的默認(rèn)值,然后通過(guò)壓測(cè)分析GC日志。????????如果看年輕代的內(nèi)存使用率處在高位,導(dǎo)致頻繁的Minor GC,而頻繁GC的效率又不高,說(shuō)明對(duì)象沒(méi)那么快能被回收,這時(shí)年輕代可以適當(dāng)調(diào)大一點(diǎn)。????如果看年老代的內(nèi)存使用率處在高位,導(dǎo)致頻繁的Full GC,這樣分兩種情況:如果每次Full GC后年老代的內(nèi)存占用率沒(méi)有下來(lái),可以懷疑是內(nèi)存泄漏;如果Full GC后年老代的內(nèi)存占用率下來(lái)了,說(shuō)明不是內(nèi)存泄漏,要考慮調(diào)大年老代。????對(duì)于G1收集器來(lái)說(shuō),可以適當(dāng)調(diào)大Java堆,因?yàn)镚1收集器采用了局部區(qū)域收集策略,單次垃圾收集的時(shí)間可控,可以管理較大的Java堆。9. 如何設(shè)計(jì)存儲(chǔ)海量數(shù)據(jù)的存儲(chǔ)系統(tǒng)
        ????海量數(shù)據(jù)的解決方案:????頁(yè)面上:使用緩存;頁(yè)面靜態(tài)化技術(shù);
        ????數(shù)據(jù)庫(kù)層面:
        ????????分離數(shù)據(jù)庫(kù)中活躍的數(shù)據(jù);????????批量讀取和延遲修改;????????讀寫分離;????????使用NoSQL和Hadoop等技術(shù);????????分布式部署數(shù)據(jù)庫(kù);????????應(yīng)用服務(wù)和數(shù)據(jù)服務(wù)分離;
        ????其他方面:
        ????????使用搜索引擎搜索數(shù)據(jù)庫(kù)中的數(shù)據(jù);
        ????????進(jìn)行業(yè)務(wù)的拆分;????高并發(fā)情況下的解決方案:
        ????????應(yīng)用程序和靜態(tài)資源文件進(jìn)行分離,靜態(tài)資源可以使用CDN;
        ????集群與分布式;
        ????????使用Nginx反向代理;
        10. 緩存的實(shí)現(xiàn)原理,設(shè)計(jì)緩存要注意什么
        ????將熱點(diǎn)數(shù)據(jù)放在內(nèi)存中,用戶查詢時(shí)命中內(nèi)存中的數(shù)據(jù)而不用到數(shù)據(jù)庫(kù)中查詢
        注意緩存的一致性,緩存雪崩、擊穿、穿透的問(wèn)題
        11. 淘寶熱門商品信息在JVM哪個(gè)內(nèi)存區(qū)域??????,不應(yīng)該在緩存中嘛,然后落地在數(shù)據(jù)庫(kù)里,跟JVM有屁關(guān)系
        12. 操作系統(tǒng)的頁(yè)式存儲(chǔ)
        ????把內(nèi)存分成大小相同的內(nèi)存頁(yè),然后程序通過(guò)頁(yè)表來(lái)查詢到自己的存儲(chǔ)位置,這樣就可以使用不連續(xù)的內(nèi)存來(lái)加載程序
        ????事實(shí)上現(xiàn)在都用虛擬內(nèi)存的方式,把程序分段加載到虛擬內(nèi)存中,再把內(nèi)存分頁(yè),通過(guò)段表、頁(yè)表的形式來(lái)映射程序在內(nèi)存中的位置
        13. volatile關(guān)鍵字的如何保證內(nèi)存可見(jiàn)性
        ????volatile修飾的變量保證其每個(gè)寫操作后都更新到主內(nèi)存,每個(gè)讀操作都到主內(nèi)存中更新,具體的話是在JVM層面,在修飾的變量前后加關(guān)鍵字
        ????順帶一提volatile還能防止指令重排,這兩者的實(shí)現(xiàn)方式都是內(nèi)存屏障。
        14. happen-before原則
        ????如果前一個(gè)操作的執(zhí)行結(jié)果必須對(duì)后一個(gè)操作可見(jiàn),那就不允許這兩個(gè)操作進(jìn)行重排序,且happen-befor具有傳遞性
        15. Lucene全文搜索的原理
        ????先將全文由分詞器進(jìn)行分詞,會(huì)提取出關(guān)鍵詞和頻率,然后這個(gè)關(guān)鍵詞后面也會(huì)跟著一個(gè)鏈表,這個(gè)鏈表記錄了有個(gè)關(guān)鍵詞的文檔。我們通過(guò)關(guān)鍵詞搜索就可以找到這串鏈表,也就得到了所要的文檔了。
        16. 你覺(jué)得自己適合哪方面的開發(fā),為什么
        ????JavaWeb的后端開發(fā),一個(gè)當(dāng)然是對(duì)這方面感興趣,涉及范圍廣,然后目前掌握的比較多的也是這方面的內(nèi)容,技能比較熟練,自己認(rèn)識(shí)的圈子也是這個(gè)圈子里的人,如果遇到問(wèn)題也容易解決,自己也有一套這方面的學(xué)習(xí)方法,如果去學(xué)習(xí)其他的話,倒不是走出舒適區(qū)的問(wèn)題,而是對(duì)于現(xiàn)階段的我來(lái)說(shuō),不能做到在短時(shí)間內(nèi)取得階段性的成果
        17. 想去哪里實(shí)習(xí),杭州?

        二面1. 自我介紹下自己,不超過(guò)3分鐘(我的自我介紹仍然不超過(guò)1分鐘)
        2. 你說(shuō)你熟悉并發(fā)編程,那么你說(shuō)說(shuō)Java鎖有哪些種類,以及區(qū)別(果然深度不一樣)
        3. 公平鎖/非公平鎖
        ????這個(gè)是在ReentrankLock中實(shí)現(xiàn)的,synchronized沒(méi)有,是用一個(gè)隊(duì)列實(shí)現(xiàn)的,在公平鎖好理解,就是先進(jìn)這個(gè)隊(duì)列的,也先出隊(duì)列獲得資源,而非公平鎖的話,則是還沒(méi)有進(jìn)隊(duì)列之前可以與隊(duì)列中的線程競(jìng)爭(zhēng)嘗試獲得鎖,如果獲取失敗,則進(jìn)隊(duì)列,此時(shí)也是要乖乖等前面出隊(duì)才行
        4. 可重入鎖
        ????如果一個(gè)線程獲得過(guò)該鎖,可以再次獲得,主要是用途就是在遞歸方面,還有就是防止死鎖,比如在一個(gè)同步方法塊中調(diào)用了另一個(gè)相同鎖對(duì)象的同步方法塊
        5. 獨(dú)享鎖/共享鎖
        ????共享鎖可以由多個(gè)線程獲取使用,而獨(dú)享鎖只能由一個(gè)線程獲取。
        ????對(duì)ReentrantReadWriteLock其讀鎖是共享鎖,其寫鎖是獨(dú)占鎖
        ????讀鎖的共享鎖可保證并發(fā)讀是非常高效的,讀寫,寫讀,寫寫的過(guò)程是互斥的。其中獲得寫鎖的線程還能同時(shí)獲得讀鎖,然后通過(guò)釋放寫鎖來(lái)降級(jí)。讀鎖則不能升級(jí)
        6. 互斥鎖/讀寫鎖
        ????上面講的獨(dú)享鎖/共享鎖就是一種廣義的說(shuō)法,互斥鎖/讀寫鎖就是具體的實(shí)現(xiàn)。
        ????互斥鎖在Java中的具體實(shí)現(xiàn)就是ReentrantLock
        ????讀寫鎖在Java中的具體實(shí)現(xiàn)就是ReadWriteLock
        7. 樂(lè)觀鎖/悲觀鎖
        ????樂(lè)觀鎖就是樂(lè)觀的認(rèn)為不會(huì)發(fā)生沖突,用cas和版本號(hào)實(shí)現(xiàn)
        ????悲觀鎖就是認(rèn)為一定會(huì)發(fā)生沖突,對(duì)操作上鎖
        8. 分段鎖
        ????在1.7的concurrenthashmap中有分段鎖的實(shí)現(xiàn),具體為默認(rèn)16個(gè)的segement數(shù)組,其中segement繼承自reentranklock,每個(gè)線程過(guò)來(lái)獲取一個(gè)鎖,然后操作這個(gè)鎖下連著的map。
        9. 偏向鎖/輕量級(jí)鎖/重量級(jí)鎖
        ????在jdk1.6中做了第synchronized的優(yōu)化,偏向鎖指的是當(dāng)前只有這個(gè)線程獲得,沒(méi)有發(fā)生爭(zhēng)搶,此時(shí)將方法頭的markword設(shè)置成0,然后每次過(guò)來(lái)都cas一下就好,不用重復(fù)的獲取鎖
        ????輕量級(jí)鎖:在偏向鎖的基礎(chǔ)上,有線程來(lái)爭(zhēng)搶,此時(shí)膨脹為輕量級(jí)鎖,多個(gè)線程獲取鎖時(shí)用cas自旋獲取,而不是阻塞狀態(tài)
        ????重量級(jí)鎖:輕量級(jí)鎖自旋一定次數(shù)后,膨脹為重量級(jí)鎖,其他線程阻塞,當(dāng)獲取鎖線程釋放鎖后喚醒其他線程。(線程阻塞和喚醒比上下文切換的時(shí)間影響大的多,涉及到用戶態(tài)和內(nèi)核態(tài)的切換)
        ????自旋鎖:在沒(méi)有獲取鎖的時(shí)候,不掛起而是不斷輪詢鎖的狀態(tài)
        10. 如何保證內(nèi)存可見(jiàn)性
        ????volatile ?通過(guò)內(nèi)存屏障
        ????synchronized 通過(guò)修飾的程序段同一時(shí)間只能由同一線程運(yùn)行,釋放鎖前會(huì)刷新到主內(nèi)存
        11. Http請(qǐng)求的過(guò)程與原理
        12. 三次握手與四次揮手?
        13. 通過(guò)HTTP網(wǎng)絡(luò)請(qǐng)求過(guò)程中的TCP協(xié)議
        14. TCP連接的特點(diǎn)
        ????相較于UDP來(lái)說(shuō),更加安全可靠,是面向連接,傳輸?shù)脑捠且粤鞯男问絺鬏?br />15. TCP連接如何保證安全可靠的
        16. 為什么TCP連接需要三次握手,兩次不可以嗎,為什么
        ????不可以兩次握手只能一方確認(rèn)自己的收發(fā)沒(méi)有問(wèn)題,而另一方的收沒(méi)問(wèn)題,發(fā)可能存在問(wèn)題
        17. AOP的原理
        ????靜態(tài)織入,動(dòng)態(tài)代理
        18. JDK動(dòng)態(tài)代理與cglib實(shí)現(xiàn)的區(qū)別(這個(gè),醉得很厲害)
        ????接口(反射)/繼承
        19. 那么你說(shuō)說(shuō)代理的實(shí)現(xiàn)原理唄
        ????1.創(chuàng)建一個(gè)接口
        ????2.創(chuàng)建一個(gè)實(shí)現(xiàn)了這個(gè)接口的實(shí)現(xiàn)類
        ????3.創(chuàng)建一個(gè)實(shí)現(xiàn)了這個(gè)接口的代理類,在代理類中實(shí)例化實(shí)現(xiàn)類,并且調(diào)用實(shí)現(xiàn)類中的方法
        20. 看過(guò)Spring源碼沒(méi),說(shuō)說(shuō)Ioc容器的加載過(guò)程吧
        ????簡(jiǎn)單概括:
        ????1.刷新預(yù)處理
        ????2.將配置信息解析,注冊(cè)到BeanFactory
        ????3.設(shè)置bean的類加載器
        ??? 4.如果有第三方想再bean加載注冊(cè)完成后,初始化前做點(diǎn)什么(例如修改屬性的值,修改bean的scope為單例或者多例。),提供了相應(yīng)的模板方法,后面還調(diào)用了這個(gè)方法的實(shí)現(xiàn),并且把這些個(gè)實(shí)現(xiàn)類注冊(cè)到對(duì)應(yīng)的容器中
        ????5.初始化當(dāng)前的事件廣播器
        ????6.初始化所有的bean
        ??? 7.廣播applicationcontext初始化完成。

        //來(lái)自于AbstractApplicationContextpublic void refresh() throws BeansException, IllegalStateException { //進(jìn)行加鎖處理 synchronized (this.startupShutdownMonitor) { // 進(jìn)行刷新容器的準(zhǔn)備工作,比如設(shè)定容器開啟時(shí)間,標(biāo)記容器已啟動(dòng)狀態(tài)等等 prepareRefresh();
        // 讓子類來(lái)刷新創(chuàng)建容器 // 這步比較關(guān)鍵,這步完成后,配置文件就會(huì)解析成一個(gè)個(gè) Bean 定義,注冊(cè)到 BeanFactory 中, // 當(dāng)然,這里說(shuō)的 Bean 還沒(méi)有初始化,只是配置信息都提取出來(lái)了, // 注冊(cè)也只是將這些信息都保存到了注冊(cè)中心(說(shuō)到底核心是一個(gè) beanName-> beanDefinition 的 map) ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
        // 設(shè)置 BeanFactory 的類加載器,添加幾個(gè) BeanPostProcessor,手動(dòng)注冊(cè)幾個(gè)特殊的 bean prepareBeanFactory(beanFactory);
        try { // 這里需要知道 BeanFactoryPostProcessor 這個(gè)知識(shí)點(diǎn), //Bean 如果實(shí)現(xiàn)了此接口,那么在容器初始化以后,Spring 會(huì)負(fù)責(zé)調(diào)用里面的 postProcessBeanFactory 方法。 // 這里是提供給子類的擴(kuò)展點(diǎn),到這里的時(shí)候,所有的 Bean 都加載、注冊(cè)完成了,但是都還沒(méi)有初始化 // 具體的子類可以在這步的時(shí)候添加一些特殊的 BeanFactoryPostProcessor 的實(shí)現(xiàn)類或做點(diǎn)什么事 postProcessBeanFactory(beanFactory);
        // 調(diào)用 BeanFactoryPostProcessor 各個(gè)實(shí)現(xiàn)類的 postProcessBeanFactory(factory) 方法 invokeBeanFactoryPostProcessors(beanFactory);
        // 注冊(cè) BeanPostProcessor 的實(shí)現(xiàn)類,注意看和 BeanFactoryPostProcessor 的區(qū)別 // 此接口兩個(gè)方法: postProcessBeforeInitialization 和 postProcessAfterInitialization // 兩個(gè)方法分別在 Bean 初始化之前和初始化之后得到執(zhí)行。注意,到這里 Bean 還沒(méi)初始化 registerBeanPostProcessors(beanFactory);
        // 初始化當(dāng)前 ApplicationContext 的 MessageSource initMessageSource();
        // 初始化當(dāng)前 ApplicationContext 的事件廣播器 initApplicationEventMulticaster();
        // 從方法名就可以知道,典型的模板方法(鉤子方法), // 具體的子類可以在這里初始化一些特殊的 Bean(在初始化 singleton beans 之前) onRefresh();
        // 注冊(cè)事件監(jiān)聽器,監(jiān)聽器需要實(shí)現(xiàn) ApplicationListener 接口 registerListeners();
        // 初始化所有的 singleton beans(lazy-init 的除外) // 重點(diǎn)方法將會(huì)在下一個(gè)章節(jié)進(jìn)行說(shuō)明 finishBeanFactoryInitialization(beanFactory);
        // 最后,廣播事件,ApplicationContext 初始化完成 finishRefresh(); } catch (BeansException ex) { if (logger.isWarnEnabled()) { logger.warn("Exception encountered during context initialization - cancelling refresh attempt: " + ex); } // 銷毀已經(jīng)初始化的 singleton 的 Beans,以免有些 bean 會(huì)一直占用資源 destroyBeans();
        // Reset 'active' flag. cancelRefresh(ex);
        // 把異常往外拋 throw ex; } finally { // Reset common introspection caches in Spring's core, since we // might not ever need metadata for singleton beans anymore... resetCommonCaches(); } }}

        21. 了解過(guò)字節(jié)碼的編譯過(guò)程嗎(這個(gè)還真不知道)

        d4fc069234b69eeb3b07fe716c0a97b5.webp


        三面1. 自我介紹,不超過(guò)3分鐘(這次好像時(shí)間更久了,也就2分鐘多點(diǎn))2. 說(shuō)一下你對(duì)哪個(gè)項(xiàng)目比較熟悉????數(shù)據(jù)庫(kù)項(xiàng)目
        3. 為什么做這個(gè)項(xiàng)目
        ????當(dāng)時(shí)公司里為了整改balabala
        ?4. 項(xiàng)目采用了什么架構(gòu),數(shù)據(jù)庫(kù)如何設(shè)計(jì)的
        ????簡(jiǎn)單是MVC架構(gòu),數(shù)據(jù)庫(kù)
        5. 數(shù)據(jù)庫(kù)由哪些表,為什么有這些表
        6. 主要有哪些核心模塊,模塊之間如何通信的7. session放在哪里

        c1d09bbc70165358dde9eb0cddd05340.webp

        ?8.? 如何保存會(huì)話狀態(tài),有哪些方式、區(qū)別如何????cookie 保存在客戶端,容易篡改
        ????session 保存在服務(wù)端,連接較大的話會(huì)給服務(wù)端帶來(lái)壓力,分布式的情況下可以放在數(shù)據(jù)庫(kù)中,
        ????優(yōu)點(diǎn):
        ??????? 1:簡(jiǎn)單且高性能
        ??????? 2:支持分布式與集群
        ??????? 3:支持服務(wù)器斷電和重啟
        ??????? 4:支持 tomcat、jetty 等運(yùn)行容器重啟
        ????缺點(diǎn):
        ??????? 1、需要檢查和維護(hù)session過(guò)期,手動(dòng)維護(hù)cookie;
        ??????? 2、不能有頻繁的session數(shù)據(jù)存??;
        ????token 多終端或者app的話一定要這個(gè),
        ????隨著技術(shù)的發(fā)展,分布式web應(yīng)用的普及,通過(guò)session管理用戶登錄狀態(tài)成本越來(lái)越高,因此慢慢發(fā)展成為token的方式做登錄身份校驗(yàn),然后通過(guò)token去取redis中的緩存的用戶信息,隨著之后jwt的出現(xiàn),校驗(yàn)方式更加簡(jiǎn)單便捷化,無(wú)需通過(guò)redis緩存,而是直接根據(jù)token取出保存的用戶信息,以及對(duì)token可用性校驗(yàn),單點(diǎn)登錄更為簡(jiǎn)單。
        JWT的token包含三部分?jǐn)?shù)據(jù):
        1. Header:頭部,通常頭部有兩部分信息:
        • 聲明類型,這里是JWT
        • 加密算法,自定義
        我們會(huì)對(duì)頭部進(jìn)行base64加密(可解密),得到第一部分?jǐn)?shù)據(jù)Payload:載荷,就是有效數(shù)據(jù),一般包含下面信息:
        • 用戶身份信息(注意,這里因?yàn)椴捎胋ase64加密,可解密,因此不要存放敏感信>息)
        • 注冊(cè)聲明:如token的簽發(fā)時(shí)間,過(guò)期時(shí)間,簽發(fā)人等
        這部分也會(huì)采用base64加密,得到第二部分?jǐn)?shù)據(jù)Signature:簽名,是整個(gè)數(shù)據(jù)的認(rèn)證信息。一般根據(jù)前兩步的數(shù)據(jù), 再加上服務(wù)的>的密鑰(secret)????(不要泄漏,最好周期性更換),通過(guò)加密算法生成。
        1. 用于驗(yàn)證整個(gè)數(shù)據(jù)完整和可靠性(不要泄漏,最好周期性更換),通過(guò)加密算法生成。
        2. 用于驗(yàn)證整個(gè)數(shù)據(jù)完整和可靠性
        9. 分布式session如何管理,你有哪些方案
        ????Redis做緩存持久化存儲(chǔ)session
        ????數(shù)據(jù)庫(kù)存儲(chǔ)session
        10. 學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)和算法嗎(當(dāng)然),你說(shuō)說(shuō)二分搜索的過(guò)程
        ????二分搜索有一點(diǎn)要求就是數(shù)據(jù)有已經(jīng)排序好的,假設(shè)是自然排序的,拿到目標(biāo)數(shù)據(jù)后查找中間的值,如果大了,就去右邊一部分的中間值比較,小了就去左邊一部分的中間值
        11. 說(shuō)一下快排的過(guò)程,寫一下偽代碼
        ????取一個(gè)值,然后設(shè)置兩個(gè)指針,一個(gè)指針先從后到前開始遍歷,遇到小于這個(gè)值的就停止,然后另一個(gè)指針從前到后遍歷,遇到大于這個(gè)值的就停止,知道這兩個(gè)指針相遇,此時(shí)交換這個(gè)值與相遇的時(shí)候指針的值,以這個(gè)坐標(biāo)為邊界兩邊開始遞歸
        12. 了解哪設(shè)計(jì)模式,舉例說(shuō)說(shuō)在jdk源碼哪些用到了你說(shuō)的設(shè)計(jì)模式
        ????單例:ioc容器
        ????模板:ioc、springmvc
        ????建造者模式:lombok
        ????工廠:ioc
        ????代理:aop
        ????訂閱/發(fā)布:消息隊(duì)列,redis的pub/sub
        13. 你有什么問(wèn)我嗎(仍然上面三個(gè)問(wèn)題)
        四面1. 來(lái)個(gè)自我介紹唄,不超過(guò)3分鐘
        2. 介紹下你最熟悉的項(xiàng)目
        3. 項(xiàng)目使用了什么架構(gòu),亮點(diǎn)是什么
        ????MVC,用到Lucene,用aop實(shí)現(xiàn)了權(quán)限的管理
        4. 平時(shí)主要學(xué)習(xí)什么課程
        ????Java、數(shù)據(jù)結(jié)構(gòu)、數(shù)學(xué)建模
        5. 你目前的研究方向是什么
        6. 家是哪的
        7. 喜歡看什么書
        8. 大概什么時(shí)候能來(lái)實(shí)習(xí)呢

        五面1. 自我介紹下吧
        2. 做了哪些項(xiàng)目
        3. 看你在問(wèn)題中說(shuō)你在杭州看到很多商販?zhǔn)褂酶犊疃S碼,你對(duì)支付寶怎么看
        4. 每天有那么多人使用支付寶,這些數(shù)據(jù)如果給你存儲(chǔ),你會(huì)怎么設(shè)計(jì)呢(不是說(shuō)HR不問(wèn)技術(shù)問(wèn)題嗎?不愧是阿里的HR)
        5. 為什么想來(lái)支付寶實(shí)習(xí)呢
        6. 技術(shù)棧、對(duì)移動(dòng)支付比較好奇,
        7. 你身邊同學(xué)如何評(píng)價(jià)你、老師呢
        8. 如果與同事發(fā)生了意見(jiàn)的不一致,你會(huì)如何解決呢
        ????首先就是要確保雙方都理解了對(duì)方的意思,因?yàn)橛行┦菧贤ú怀浞謱?dǎo)致的,然后同時(shí)綜合對(duì)比不同意見(jiàn),可能會(huì)對(duì)工作內(nèi)容產(chǎn)生的影響,并且會(huì)根據(jù)利弊來(lái)選擇方法

        有道無(wú)術(shù),術(shù)可成;有術(shù)無(wú)道,止于術(shù)

        歡迎大家關(guān)注Java之道公眾號(hào)


        好文章,我在看??

        瀏覽 58
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产精品操b | 亚洲成人色情影视 | 男女拍拍视频免费 | CaoPorn国产精品免费收藏 | 黄笔毛片大全免费观看 | 精品色婷婷 | 少妇一级婬片免费放播放 | 香港150部性三级 | 欧美一级性爱视频 | 我把她下药做得好爽 |