數(shù)據(jù)庫類
作為后端開發(fā),可以說數(shù)據(jù)庫是重之又重仔掸。提問的比例也相當(dāng)之大医清。所以這里先記錄下這個(gè)会烙。
如何快速導(dǎo)入10萬條數(shù)據(jù)到MySQL數(shù)據(jù)庫?
這個(gè)應(yīng)該當(dāng)時(shí)很緊張纸厉,居然半天說不出來五嫂。其實(shí)當(dāng)時(shí)心里有一個(gè)答案了沃缘,就是存儲過程。但是因?yàn)槠匠i_發(fā)基本上沒用到過這東西闺金,所以都不敢說了峰档。讥巡。
網(wǎng)上還有有一些答案說批處理,通過sql文件進(jìn)行導(dǎo)入等等槽棍,這個(gè)有時(shí)間可以去驗(yàn)證一番抬驴。
mysql主從配置時(shí)布持,如果在主服務(wù)器修改某個(gè)數(shù)據(jù),然后在從服務(wù)器中讀取按傅,因?yàn)檠舆t或者宕機(jī)的問題胧卤,導(dǎo)致沒有讀到數(shù)據(jù)枝誊,應(yīng)該怎么辦?
這個(gè)面試官很厲害啊绝骚,很多問題都是提一些開放性的東西痊乾,只讓你提供思路哪审,沒有正確與否的標(biāo)準(zhǔn)答案。
網(wǎng)上找了下滴须,有以下兩種技術(shù)可以做到主從斷開叽奥,數(shù)據(jù)不一致的處理朝氓。相信肯定還有更多的技術(shù)可以做到主届,這里只做拋磚引玉~
GTID復(fù)制君丁;
推薦關(guān)注:pt-table-checksum /pt-table-sync
MySQL默認(rèn)最大的連接數(shù)是多少?
默認(rèn)為100将宪,可以通過修改my.ini或my.cnf配置文件中的max_connections屬性來調(diào)整较坛。
SSH(SpringMVC、Struts 2华嘹、hibernate)這幾個(gè)框架可以說做Java后端開發(fā)的基本都接觸過确封,但是真正深入去了解的又有幾個(gè)呢爪喘?一般也就能應(yīng)付一下工作就完事了吧。泛豪。沒辦法呀侦鹏,誰讓工作的壓力太大呢略水,各種改需求,各種修Bug~
唉慎璧,我也不例外,因?yàn)槲抑匦木筒辉谶@個(gè)跨释,想逐漸轉(zhuǎn)到做大數(shù)據(jù)相關(guān)的開發(fā)胸私,所以對這塊也沒浪費(fèi)精力去深入了解的。但是沒辦法啊鳖谈,目前找后端工作還是會經(jīng)常問到的岁疼。
說一下SpringMVC 處理客戶端請求的過程?
額缆娃,當(dāng)時(shí)一聽到這個(gè)問題就懵了捷绒。其實(shí)當(dāng)初剛開始學(xué)習(xí)這個(gè)的時(shí)候還真花力氣去學(xué)過這方面瑰排,但是隨著工作下去,反而逐漸忘記了疙驾。一般我們用都是在web.xml中配置一下DispatchServlet郭毕,然后在配置文件中添加自動掃描注解組件它碎,再到類上面添加Controller注解,最后在方法上面添加RequestMapping注解就完事了显押。但是面試肯定不能這樣說啦扳肛,我當(dāng)時(shí)也是沒辦法就把這套給說上去了,感覺還是挺丟人的乘碑。這里貼一下圖:
PS:圖片來自springIn Action 第四版
說一下Hibernate的懶加載機(jī)制挖息?
這是一個(gè)面試時(shí)高概率碰到的問題,之前刷面試題的時(shí)候也遇到過這個(gè)問題兽肤。但是苦逼如我套腹,事到臨頭反而緊張的搞忘記了。资铡。
網(wǎng)上找的一篇說明:
延遲加載电禀,也叫懶加載,它是hibernate為提高程序執(zhí)行效率而提供的一種機(jī)制笤休,即只有真正使用該對象的數(shù)據(jù)時(shí)才會創(chuàng)建尖飞。
Hibernate中主要是通過代理(proxy)機(jī)制來實(shí)現(xiàn)延遲加載。它的具體過程:Hibernate叢數(shù)據(jù)庫獲取某一個(gè)對象數(shù)據(jù)時(shí)店雅、獲取某一個(gè)對象的集合屬性值時(shí)政基,或獲取某一個(gè)對象所關(guān)聯(lián)的另一個(gè)對象時(shí),由于沒有使用該對象的數(shù)據(jù)闹啦,hibernate并不是數(shù)據(jù)庫加載真正的數(shù)據(jù)沮明,而只是為該對象創(chuàng)建一個(gè)代理對象來代表這個(gè)對象,這個(gè)對象上的所有屬性都是默認(rèn)值窍奋;只有在真正需要使用該對象的數(shù)據(jù)時(shí)才創(chuàng)建這個(gè)真實(shí)對象荐健,真正從數(shù)據(jù)庫中加載它的數(shù)據(jù),這樣在某些情況下费变,就可以提高查詢效率摧扇。
Nginx如何配置防止DDOS攻擊?
因?yàn)槲乙矎臎]遇到過DDOS攻擊挚歧,所以對這塊了解的非常之少扛稽。當(dāng)時(shí)也就硬著頭皮說根據(jù)請求封IP了,其實(shí)真正防御起來滑负,花樣繁多在张。最簡單有效的方法是堆硬件了用含。但是成本太高了。帮匾。網(wǎng)上找的一些經(jīng)驗(yàn)啄骇,記錄一下,萬一以后遇到了呢
限制每秒請求數(shù)
ngx_http_limit_req_module模塊通過漏桶原理來限制單位時(shí)間內(nèi)的請求數(shù)瘟斜,一旦單位時(shí)間內(nèi)請求數(shù)超過限制缸夹,就會返回503錯(cuò)誤。配置需要在兩個(gè)地方設(shè)置:
nginx.conf的http段內(nèi)定義觸發(fā)條件螺句,可以有多個(gè)條件虽惭;
在location內(nèi)定義達(dá)到觸發(fā)條件時(shí)nginx所要執(zhí)行的動作。
限制IP連接數(shù)
ngx_http_limit_conn_module的配置方法和參數(shù)與http_limit_req模塊很像蛇尚,參數(shù)少芽唇,要簡單很多。
白名單設(shè)置
http_limit_conn和http_limit_req模塊限制了單ip單位時(shí)間內(nèi)的并發(fā)和請求數(shù)取劫,但是如果Nginx前面有l(wèi)vs或者 haproxy之類的負(fù)載均衡或者反向代理匆笤,nginx獲取的都是來自負(fù)載均衡的連接或請求,這時(shí)不應(yīng)該限制負(fù)載均衡的連接和請求谱邪,就需要geo和map 模塊設(shè)置白名單炮捧。
Nginx參考文章:
http://www.escorm.com/archives/452
transient關(guān)鍵字的作用?
這是在筆試的時(shí)候遇到的虾标,原題是給了一段程序片段寓盗,問的是序列化的問題。如果在類的屬性上添加這個(gè)關(guān)鍵字就表示序列化時(shí)忽略該屬性璧函。
new ArrayList<>(20)其容量一共擴(kuò)充了幾次傀蚌?
這個(gè)題其實(shí)也是一個(gè)陷阱,如果構(gòu)造的時(shí)候給予一個(gè)容量大小蘸吓,其初始化的時(shí)候就會使用該大小的善炫,不會進(jìn)行擴(kuò)充。擴(kuò)充是在調(diào)用add方法库继。
又一個(gè)關(guān)于String的老生常談問題箩艺,代碼片段如下:
String s1 ="hello";String s2 ="he";String s3 ="he"+newString("llo");System.out.println(s1 == s3);
1
2
3
4
1
2
3
4
問打印結(jié)果為什么?
false宪萄,因?yàn)槭謩觧ew String("llo")的形式艺谆,會創(chuàng)建2個(gè)對象,一個(gè)是在常量池中的拜英,一個(gè)是在堆上面的對象静汤。如果將s3改為String s3 = "he" + "llo";
那么結(jié)果就是true了。
HashMap的內(nèi)部實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)是什么?
數(shù)組+鏈表
如何降低HashMap的碰撞問題虫给?
對HashMap進(jìn)行二次hash藤抡。
JAVA行業(yè)交流,歡迎新人和大佬共同入駐抹估,里面有很多免費(fèi)教學(xué)資源缠黍,視頻資源,書籍資源药蜻,歡迎索取瓷式,群號240448376