分享阿里最全面试88题:阿里巴巴核心技术部,蚂蚁金服面试题含答案
前言
驀然回首自己做開(kāi)發(fā)已經(jīng)十年了,這十年中我獲得了很多,技術(shù)能力、培訓(xùn)、出國(guó)、大公司的經(jīng)歷,還有很多很好的朋友。但再仔細(xì)一想,這十年中我至少浪費(fèi)了五年時(shí)間,這五年可以足夠讓自己成長(zhǎng)為一個(gè)優(yōu)秀的程序員,可惜我錯(cuò)過(guò)了,我用這五年時(shí)間和很多程序員一樣在困惑和迷茫中找不到出路!
路其實(shí)一直都在那里,只是我們看不到而已!
以前我一直被公司和技術(shù)牽著走,并不是自己在選擇技術(shù),而是不自覺(jué)地被推到了這個(gè)位置上。想想有多少人對(duì)于自己將來(lái)要從事的職業(yè)和技術(shù)類型進(jìn)行過(guò)深入思考和比較呢?當(dāng)我跳出編碼后,我開(kāi)始思考和程序及程序員職業(yè)生涯相關(guān)的問(wèn)題,最后發(fā)現(xiàn),影響我們走入今天的困局的竟然是一些我們常常掛在嘴邊的話。
貌似這一點(diǎn)適應(yīng)的行業(yè)最廣,但是我可以很肯定的說(shuō):當(dāng)你從事Java一年后,重新找工作時(shí),才會(huì)真實(shí)的感受到這句話。
工作第一年,往往是什么都充滿新鮮感,什么都學(xué)習(xí),沖勁十足的一年;WEB行業(yè)知識(shí)更新特別快,今天一個(gè)框架的新版本,明天又是另一個(gè)新框架,有時(shí)往往根據(jù)項(xiàng)目的需要來(lái)不斷學(xué)習(xí)新東西;所有,很多時(shí)候感覺(jué),自己用過(guò)的東西真多呀!但是真正深入研究的東西卻不多。面試,是跳槽后第一個(gè)需要面對(duì)的問(wèn)題;而且不同公司面試的著重點(diǎn)不同;但是卻有一個(gè)共同點(diǎn):Java基礎(chǔ)是必考的。
工作第一年,可能問(wèn)你String對(duì)象創(chuàng)建的理解,常用的框架是什么等等;
工作第三年,就問(wèn)你Java內(nèi)存分配機(jī)制是什么,類是如何加載的等等;
工作第五年,就問(wèn)你常用的設(shè)計(jì)模式是什么,你在工作中充當(dāng)什么角色,怎么獨(dú)立完成一個(gè)模塊等等;
可以看出——這是一個(gè)典型的程序員的成長(zhǎng)過(guò)程:
使用Java—->深入理解Java積累經(jīng)驗(yàn)——>獨(dú)立設(shè)計(jì)分析能力——>獨(dú)當(dāng)一面的多面手!
因此,必須學(xué)習(xí):
數(shù)據(jù)庫(kù)
最常用的是MySQL了,熟練掌握使用存儲(chǔ)過(guò)程,觸發(fā)器等;
分布式
透徹理解分布式架構(gòu)的好處和優(yōu)點(diǎn)必然性,適應(yīng)市場(chǎng)需求,能夠去找一些更大的平臺(tái)發(fā)展,提升自己的綜合技術(shù)能力和薪資。
微服務(wù)
微服務(wù)化架構(gòu)并非銀彈,它的實(shí)施本身就會(huì)面臨很多陷阱和挑戰(zhàn),涉及到設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、部署、運(yùn)行和運(yùn)維等各個(gè)方面,一旦使用不當(dāng),則會(huì)導(dǎo)致整個(gè)微服務(wù)架構(gòu)改造的效果大打折扣,甚至失敗。
其他就不多說(shuō)了,大家可以補(bǔ)充。
學(xué)習(xí)上,興趣是最大的老師;項(xiàng)目驅(qū)動(dòng)也是不錯(cuò)的選擇,總之,不學(xué)習(xí)不行。
從阿里面試回來(lái)給大家分享一下阿里所問(wèn)到的面試題,不會(huì)的朋友不要擔(dān)心,文末有答案詳解!
【阿里天貓、螞蟻金服面試題目】
分布式鎖
1.nginx的請(qǐng)求轉(zhuǎn)發(fā)算法,如何配置根據(jù)權(quán)重轉(zhuǎn)發(fā)
2.用hashmap實(shí)現(xiàn)redis有什么問(wèn)題(死鎖,死循環(huán),可用ConcurrentHashmap)
3.線程的狀態(tài)
4.線程的阻塞的方式
5.sleep和wait的區(qū)別
6.hashmap的底層實(shí)現(xiàn)
7.一萬(wàn)個(gè)人搶100個(gè)紅包,如何實(shí)現(xiàn)(不用隊(duì)列),如何保證2個(gè)人不能搶到同一個(gè)紅包,可用分布式鎖
8.java內(nèi)存模型,垃圾回收機(jī)制,不可達(dá)算法
9.兩個(gè)Integer的引用對(duì)象傳給一個(gè)swap方法在方法內(nèi)部交換引用,返回后,兩個(gè)引用的值是否會(huì)發(fā)現(xiàn)變化
10.aop的底層實(shí)現(xiàn),動(dòng)態(tài)代理是如何動(dòng)態(tài),假如有100個(gè)對(duì)象,如何動(dòng)態(tài)的為這100個(gè)對(duì)象代理
11.是否用過(guò)maven install。 maven test。git(make install是安裝本地jar包)
12.tomcat的各種配置,如何配置docBase
13.spring的bean配置的幾種方式
14.web.xml的配置
15.spring的監(jiān)聽(tīng)器。
16.zookeeper的實(shí)現(xiàn)機(jī)制,有緩存,如何存儲(chǔ)注冊(cè)服務(wù)的
http://17.IO會(huì)阻塞嗎?readLine是不是阻塞的
18.用過(guò)spring的線程池還是java的線程池?
19.字符串的格式化方法 (20,21這兩個(gè)問(wèn)題問(wèn)的太低級(jí)了)
20.時(shí)間的格式化方法
21.定時(shí)器用什么做的
22.線程如何退出結(jié)束
23.java有哪些鎖?樂(lè)觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過(guò)reentrantlock嗎?reentrantlock與synmchronized的區(qū)別
24.ThreadLocal的使用場(chǎng)景
25.java的內(nèi)存模型,垃圾回收機(jī)制
26.為什么線程執(zhí)行要調(diào)用start而不是直接run(直接run,跟普通方法沒(méi)什么區(qū)別,先調(diào)start,run才會(huì)作為一個(gè)線程方法運(yùn)行)
27.qmq消息的實(shí)現(xiàn)機(jī)制(qmq是去哪兒網(wǎng)自己封裝的消息隊(duì)列)
28.遍歷hashmap的三種方式
29.jvm的一些命令
30.memcache和redis的區(qū)別
31.mysql的行級(jí)鎖加在哪個(gè)位置
32.ConcurrentHashmap的鎖是如何加的?是不是分段越多越好
33.myisam和innodb的區(qū)別(innodb是行級(jí)鎖,myisam是表級(jí)鎖)
34.mysql其他的性能優(yōu)化方式
35.linux系統(tǒng)日志在哪里看
36.如何查看網(wǎng)絡(luò)進(jìn)程
37.統(tǒng)計(jì)一個(gè)整數(shù)的二進(jìn)制表示中bit為1的個(gè)數(shù)
38.jvm內(nèi)存模型,java內(nèi)存模型
【阿里巴巴核心技術(shù)部面試題目】
1.如何把java內(nèi)存的數(shù)據(jù)全部dump出來(lái)
2.如何手動(dòng)觸發(fā)全量回收垃圾,如何立即觸發(fā)垃圾回收
3.hashmap如果只有一個(gè)寫其他全讀會(huì)出什么問(wèn)題
4.git rebase
5.mongodb和hbase的區(qū)別
6.如何解決并發(fā)問(wèn)題
7.volatile的用途
8.java線程池(好像之前我的理解有問(wèn)題)
9.mysql的binlog
10.代理模式
11.mysql是如何實(shí)現(xiàn)事務(wù)的
12.讀寫分離何時(shí)強(qiáng)制要讀主庫(kù),讀哪個(gè)從庫(kù)是通過(guò)什么方式?jīng)Q定的,從庫(kù)的同步mysql用的什么方式
13.mysql的存儲(chǔ)引擎
14.mysql的默認(rèn)隔離級(jí)別,其他隔離級(jí)別
15.將一個(gè)鏈表反轉(zhuǎn)(用三個(gè)指針,但是每次只發(fā)轉(zhuǎn)一個(gè))
16.spring Aop的實(shí)現(xiàn)原理,具體說(shuō)說(shuō)
17.何時(shí)會(huì)內(nèi)存泄漏,內(nèi)存泄漏會(huì)拋哪些異常
18.是否用過(guò)Autowire注解
19.spring的注入bean的方式
20.sql語(yǔ)句各種條件的執(zhí)行順序,如select, where, order by, group by
21.select xx from xx where xx and xx order by xx limit xx; 如何優(yōu)化這個(gè)(看explain)
22.四則元算寫代碼
23.統(tǒng)計(jì)100G的ip文件中出現(xiàn)ip次數(shù)最多的100個(gè)ip
24.zookeeper的事物,結(jié)點(diǎn),服務(wù)提供方掛了如何告知消費(fèi)方
25.5臺(tái)服務(wù)器如何選出leader(選舉算法)
26.適配器和代理模式的區(qū)別
27.讀寫鎖
28.static加鎖
29.事務(wù)隔離級(jí)別
30.門面模式,類圖(外觀模式)
31.mybatis如何映射表結(jié)構(gòu)
32.二叉樹(shù)遍歷
33.主從復(fù)制
34.mysql引擎區(qū)別
35.靜態(tài)內(nèi)部類加載到了哪個(gè)區(qū)?方法區(qū)
36.class文件編譯后加載到了哪
37.web的http請(qǐng)求如何整體響應(yīng)時(shí)間變長(zhǎng)導(dǎo)致處理的請(qǐng)求數(shù)變少,該如何處理?用隊(duì)列,當(dāng)處理不了那么多http請(qǐng)求時(shí)將請(qǐng)求放到隊(duì)列中慢慢處理,web如何實(shí)現(xiàn)隊(duì)列
38.線程安全的單例模式
39.快速排序性能考慮
40.volatile關(guān)鍵字用法
41.求表的size,或做數(shù)據(jù)統(tǒng)計(jì)可用什么存儲(chǔ)引擎
42.讀多寫少可用什么引擎
43.假如要統(tǒng)計(jì)多個(gè)表應(yīng)該用什么引擎
44.concurrenhashmap求size是如何加鎖的,如果剛求完一段后這段發(fā)生了變化該如何處理
45.1000個(gè)蘋果放10個(gè)籃子,怎么放,能讓我拿到所有可能的個(gè)數(shù)
46.可重入的讀寫鎖,可重入是如何實(shí)現(xiàn)的?
47.是否用過(guò)NIO
48.java的concurrent包用過(guò)沒(méi)
49.sting s=new string(“abc”)分別在堆棧上新建了哪些對(duì)象
50.java虛擬機(jī)的區(qū)域分配,各區(qū)分別存什么
以上所有面試題答案
文章中配套資料——https://docs.qq.com/doc/DWExwWWlwaWdiSHh2
總結(jié)
以上是生活随笔為你收集整理的分享阿里最全面试88题:阿里巴巴核心技术部,蚂蚁金服面试题含答案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ELK分布式日志收集搭建和使用
- 下一篇: 虚拟机硬盘扩容