<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          7 天,憑這個(gè)項(xiàng)目,我進(jìn)了大廠!

          共 3556字,需瀏覽 8分鐘

           ·

          2023-03-03 22:54

          大家好,今天這篇文章是 編程導(dǎo)航星球 的 404ERROR 同學(xué)的面經(jīng)分享(已上岸大廠實(shí)習(xí)):

          星球原文鏈接:https://t.zsxq.com/0bngfX6Ll

          首先,感謝魚(yú)皮的 接口開(kāi)放平臺(tái)項(xiàng)目,我憑借該項(xiàng)目通過(guò)了多個(gè)大廠、中廠的面試,最終拿到了某大廠 Java 后端實(shí)習(xí)生的 offer。

          在這里分享一下十幾場(chǎng)面試下來(lái)被問(wèn)到關(guān)于該項(xiàng)目的一些真題,回饋星球。以下回答都是基于我自己的理解整理的,如果有不準(zhǔn)確的地方,希望各位大佬指教,也希望魚(yú)皮能多出幾個(gè)這樣的項(xiàng)目!

          問(wèn)題1

          項(xiàng)目是你自己做的嗎?你為什么做這樣的一個(gè)項(xiàng)目?你做這個(gè)項(xiàng)目的背景(初衷)是什么?幾乎每次都被問(wèn)到

          答:我的初衷是盡可能地幫助和服務(wù)更多的用戶(hù)和開(kāi)發(fā)者,讓他們更加方便快捷地獲取他們想要的信息和功能。

          接口開(kāi)放平臺(tái)它可以幫助開(kāi)發(fā)者快速接入一些常用的服務(wù),從而提高他們的開(kāi)發(fā)效率,比如天氣服務(wù)、隨機(jī)頭像和心靈雞湯等服務(wù),它們是一些應(yīng)用或者小程序中常見(jiàn)的功能,所以提供這些接口可以幫助開(kāi)發(fā)者更加方便地實(shí)現(xiàn)這些功能。

          這些接口也可以讓用戶(hù)在使用應(yīng)用時(shí)獲得更加全面的功能和服務(wù),從而提高他們的用戶(hù)體驗(yàn)。所以我認(rèn)為接口開(kāi)放平臺(tái)是一個(gè)有意義的項(xiàng)目,可以為用戶(hù)和開(kāi)發(fā)者帶來(lái)更多的便利和價(jià)值。

          注:因?yàn)槲覀€(gè)人已經(jīng)將項(xiàng)目上線,并能夠提供一些真實(shí)的接口服務(wù)。有條件的同學(xué)盡量將項(xiàng)目上線。此外有兩場(chǎng)的面試官想要查看數(shù)據(jù)庫(kù),我開(kāi)了屏幕共享給他們看,所以要對(duì)數(shù)據(jù)庫(kù)的表結(jié)構(gòu)和設(shè)計(jì)有一定的了解。

          問(wèn)題2

          項(xiàng)目的架構(gòu)你是怎么設(shè)計(jì)的?

          答:我采用前后端分離的架構(gòu),前端使用Nginx部署,通過(guò) Nginx 反向代理將請(qǐng)求轉(zhuǎn)發(fā)到 web 項(xiàng)目,因?yàn)轫?xiàng)目剛剛上線,所以這里暫時(shí)采用了單機(jī)部署的模式,未來(lái)可能采取水平擴(kuò)容的方式,增加多臺(tái)節(jié)點(diǎn),通過(guò) Nginx 的負(fù)載均衡,將請(qǐng)求平均的分發(fā)到我的每個(gè)節(jié)點(diǎn)上,以支撐更高的并發(fā)。

          我的 web 項(xiàng)目使用 Spring Boot 開(kāi)發(fā),并連接到了數(shù)據(jù)庫(kù)和 Redis,數(shù)據(jù)庫(kù)使用的是 MySQL,主要用來(lái)存儲(chǔ)用戶(hù)的信息和接口的信息;通過(guò) Redis 實(shí)現(xiàn)了分布式 session,因?yàn)榭紤]到未來(lái)要使用分布式架構(gòu),為了避免使用 tomcat 保存 session 有用戶(hù)登錄失效的問(wèn)題。

          注:這里我說(shuō)出了反向代理,水平擴(kuò)容,負(fù)載均衡等技術(shù)名詞,很多面試官會(huì)根據(jù)這些名詞進(jìn)行延伸提問(wèn)(引導(dǎo)面試官往自己熟悉的東西上提問(wèn))比如:說(shuō)說(shuō)什么是正向代理/反向代理?什么是水平擴(kuò)容?什么是負(fù)載均衡?你了解哪些負(fù)載均衡的算法?提前準(zhǔn)備好這些知識(shí)之后,就可以跟面試官一頓輸出了。

          問(wèn)題3

          你怎么做的技術(shù)選型?為什么要用這些技術(shù)?

          答:使用 SpringBoot 是因?yàn)橥ㄟ^(guò)自動(dòng)裝配能夠提高項(xiàng)目的開(kāi)發(fā)效率,還能夠很好的整合其他服務(wù)。

          使用 MySQL 的原因是因?yàn)榭紤]到未來(lái)有用戶(hù)充值交易,限制調(diào)用次數(shù)等場(chǎng)景需要用事務(wù)保證數(shù)據(jù)的完整性和一致性。

          使用 Redis 的原因是因?yàn)榭梢杂脕?lái)實(shí)現(xiàn)分布式 session、鎖、緩存等功能。因?yàn)?Redis 是一個(gè)單獨(dú)的中間件,不同客戶(hù)端可以往同一個(gè) Redis 或者集群中存放session/加鎖,這樣就能保證資源能夠在分布式服務(wù)下都可見(jiàn)

          并且由于 Redis 也是單線程的,同時(shí)也支持 lua 腳本,可以保證并發(fā)安全的問(wèn)題,所以可以很簡(jiǎn)單的實(shí)現(xiàn)分布式鎖的功能。

          注:被面試官追問(wèn)自動(dòng)裝配的原理你了解過(guò)嗎?自動(dòng)裝配是怎么實(shí)現(xiàn)的?分布式 session 的原理?

          問(wèn)題4

          你的開(kāi)發(fā)流程是什么?先實(shí)現(xiàn)還是先技術(shù)選型?

          這里可以參考魚(yú)皮大佬直播開(kāi)發(fā)時(shí)對(duì)企業(yè)中做項(xiàng)目流程的講解

          答:我先參考了一些已有的產(chǎn)品,根據(jù)這些產(chǎn)品,總結(jié)出來(lái)比較好的功能點(diǎn),再結(jié)合自己想要實(shí)現(xiàn)的一些功能特色,去做了一個(gè)項(xiàng)目整體設(shè)計(jì),有了產(chǎn)品原型后再進(jìn)行技術(shù)選型使用什么樣的技術(shù)去解決什么樣的業(yè)務(wù)問(wèn)題。

          問(wèn)題5

          為什么你要使用網(wǎng)關(guān)?

          答:我這個(gè)平臺(tái)的關(guān)鍵點(diǎn)就在于提供接口服務(wù),要保證接口的可用性和穩(wěn)定性,所以將接口服務(wù)獨(dú)立部署在另一臺(tái)機(jī)器上,隱藏真實(shí)的接口地址及端口,調(diào)用接口服務(wù)的請(qǐng)求都必須經(jīng)過(guò)網(wǎng)關(guān)流量染色之后...(這里細(xì)節(jié)太多,比如 rpc 調(diào)用獲取用戶(hù)sk,重新生成簽名認(rèn)證等等)之后,將請(qǐng)求轉(zhuǎn)發(fā)到真實(shí)的接口地址,防止接口被惡意調(diào)用、盜刷。

          注:這個(gè)問(wèn)題要對(duì)網(wǎng)關(guān)做了什么事情非常非常熟悉,建議反復(fù)觀看魚(yú)皮大佬的直播回放。

          問(wèn)題6

          為什么使用 RPC 調(diào)用?有了解過(guò)其他的方式嗎?

          答:因?yàn)槿绻诰W(wǎng)關(guān)引入數(shù)據(jù)庫(kù)的操作的話,不僅會(huì)增加項(xiàng)目體積,以及違背了設(shè)計(jì)原則的單一職責(zé)原則,所以我考慮通過(guò)服務(wù)間調(diào)用的方式,我了解過(guò)有兩種方式,第一種是 Open feign,原理是構(gòu)造了一個(gè) HTTP 請(qǐng)求,并會(huì)添加很多的請(qǐng)求頭,body 是使用 json 字符串傳輸,所以調(diào)用效率會(huì)比較低,更加適合外部服務(wù)間的調(diào)用。

          然后我了解到 RPC 是可以基于 TCP 協(xié)議,避免了無(wú)用的請(qǐng)求頭,以及可以通過(guò)將數(shù)據(jù)序列化為二進(jìn)制流的形式傳輸效率更加高效,更加安全,所以更適用于我這個(gè)場(chǎng)景。最終我選擇了 Dubbo RPC 框架來(lái)實(shí)現(xiàn)這個(gè)功能。

          問(wèn)題7

          你的接口調(diào)用次數(shù)統(tǒng)計(jì)以及排行是怎么實(shí)現(xiàn)的?

          答:通過(guò) MySQL 統(tǒng)計(jì),每次調(diào)用結(jié)束后,網(wǎng)關(guān)都會(huì)發(fā)起一個(gè) rpc 請(qǐng)求,調(diào)用次數(shù)+1。

          注:這里我會(huì)拋出一個(gè)設(shè)計(jì)缺陷,在實(shí)際測(cè)試過(guò)程中,通過(guò) jmeter 壓測(cè)工具,會(huì)出現(xiàn)調(diào)用次數(shù)不準(zhǔn)的情況,原因是因?yàn)闆](méi)有在業(yè)務(wù)層面加鎖,導(dǎo)致數(shù)據(jù)庫(kù)出現(xiàn)并發(fā)寫(xiě)的問(wèn)題。并且并發(fā)量大的話,對(duì)數(shù)據(jù)庫(kù)造成很大的壓力。引導(dǎo)面試官問(wèn)出,那你有什么更好的解決方案嗎?

          答:如果在業(yè)務(wù)層面加一個(gè)寫(xiě)鎖的話,會(huì)影響業(yè)務(wù)的執(zhí)行效率,所以我想使用 Redis 去解決,Redis 有一個(gè)數(shù)據(jù)結(jié)構(gòu) Zset 支持排序,score 可以用來(lái)存儲(chǔ)調(diào)用次數(shù),并且 Redis 是單線程,可以解決并發(fā)問(wèn)題。

          注:這里被追問(wèn)過(guò) Zset 的底層實(shí)現(xiàn),以及如何將這些數(shù)據(jù)進(jìn)行持久化保存,防止 Redis 宕機(jī)導(dǎo)致數(shù)據(jù)丟失,可以從 AOF,RDB 展開(kāi)來(lái)講,或者在后臺(tái)開(kāi)啟一個(gè)定時(shí)任務(wù),定時(shí)將這些數(shù)據(jù)進(jìn)行落庫(kù)。

          問(wèn)題8

          你做過(guò)什么優(yōu)化嗎?你接口的性能怎么樣?

          答:我有一個(gè)接口是隨機(jī)返回土味情話,我在數(shù)據(jù)庫(kù)中插入了幾千條土味情話,當(dāng)調(diào)用接口時(shí)隨機(jī)返回一條。

          在還沒(méi)有優(yōu)化前,接口的 qps 在 300 左右,但是考慮到這個(gè)接口只有讀操作,沒(méi)有增刪改操作,所以我將這張表的存儲(chǔ)引擎從 Innodb 改為了 MyISAM,接口的 qps 提升到了 1500。

          注:被面試官追問(wèn)為什么改為 MyISAM 有這么大的性能提升?Innodb 和 MyISAM 有什么區(qū)別?

          這個(gè)問(wèn)題一定要根據(jù)自己實(shí)際情況來(lái)答,根據(jù)自己擅長(zhǎng)的方面,比如對(duì)查詢(xún)語(yǔ)句做了索引優(yōu)化,提升了接口的性能。

          總而言之,面試官會(huì)從各個(gè)角度去深挖項(xiàng)目的細(xì)節(jié),考量你是不是真的自己做的,是不是真的理解?所以要做到對(duì)項(xiàng)目的所有細(xì)節(jié)都非常的熟悉。當(dāng)完全理解項(xiàng)目之后,就能夠提前預(yù)測(cè)到面試官會(huì)怎么問(wèn),并在面試過(guò)程中說(shuō)出一些技術(shù)名詞引導(dǎo)面試官,然后對(duì)這些問(wèn)題,和延伸的知識(shí)點(diǎn)能夠完全掌握后,相信一定可以征服面試官。

          星球活動(dòng)

          1.歡迎參與 30 天面試題挑戰(zhàn)活動(dòng) ,搞定高頻面試題,斬殺面試官!

          2.歡迎已加入星球的同學(xué) 免費(fèi)申請(qǐng)一年編程導(dǎo)航網(wǎng)站會(huì)員 !

          3.歡迎學(xué)習(xí) 魚(yú)皮最新原創(chuàng)項(xiàng)目教程,手把手教你做出項(xiàng)目、寫(xiě)出高分簡(jiǎn)歷!

          加入我們

          歡迎加入魚(yú)皮的 編程導(dǎo)航知識(shí)星球,魚(yú)皮會(huì) 1 對(duì) 1 回答您的問(wèn)題、直播帶你做出項(xiàng)目、為你定制學(xué)習(xí)計(jì)劃和求職指導(dǎo),還能獲取海量編程學(xué)習(xí)資源,和上萬(wàn)名學(xué)編程的同學(xué)共享知識(shí)、交流進(jìn)步。

          ?? 加入星球后,您可以:

          1)添加魚(yú)皮本人微信,向他 1 對(duì) 1 提問(wèn),幫您解決問(wèn)題、告別迷茫!點(diǎn)擊了解詳情

          2)獲取海量編程知識(shí)和資源,包括:3000+ 魚(yú)皮的編程答疑和求職指導(dǎo)、原創(chuàng)編程學(xué)習(xí)路線、幾十萬(wàn)字的編程學(xué)習(xí)知識(shí)庫(kù)、幾十 T 編程學(xué)習(xí)資源、500+ 精華帖等!點(diǎn)擊了解詳情

          3)找魚(yú)皮咨詢(xún)求職建議和優(yōu)化簡(jiǎn)歷,次數(shù)不限!點(diǎn)擊了解詳情

          4)魚(yú)皮直播從 0 到 1 帶大家做出項(xiàng)目,已有 50+ 直播、完結(jié) 3 套項(xiàng)目、10+ 項(xiàng)目分享,幫您掌握獨(dú)立開(kāi)發(fā)項(xiàng)目的能力、豐富簡(jiǎn)歷!點(diǎn)擊了解詳情

          外面一套項(xiàng)目課就上千元了,而星球內(nèi)所有項(xiàng)目都有指導(dǎo)答疑,輕松解決問(wèn)題

          星球提供的所有服務(wù),都是為了幫您更好地學(xué)編程、找到理想的工作。誠(chéng)摯地歡迎您的加入,這可能是最好的學(xué)習(xí)機(jī)會(huì),也是最值得的一筆投資!

          長(zhǎng)按掃碼領(lǐng)優(yōu)惠券加入,也可以添加微信 yupi1085 咨詢(xún)星球(備注“想加星球”):

          往期推薦

          我的學(xué)習(xí)小圈子

          連接不存在的 IP ,會(huì)發(fā)生什么?

          偷偷盤(pán)點(diǎn)面試官才知道的事

          這個(gè)項(xiàng)目不算爛大街,可以沖

          代碼這樣寫(xiě),同事樂(lè)開(kāi)花

          8 大 Web 開(kāi)發(fā)趨勢(shì)預(yù)測(cè)!

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

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  热热热色色色 | 欧美操逼視频在线观看 | 在线免费看不卡黄色视频 | 校园激情一区二区三区 | AⅤ视频在线观看 |