阿里钞螟、騰訊、百度等大廠面試都考核哪些技術(shù)點(diǎn)谎碍?
關(guān)于MySQL鳞滨、Redis面試官一般都會(huì)問什么?
為什么鹿晗發(fā)布戀情的時(shí)候蟆淀,微博系統(tǒng)會(huì)崩潰拯啦,如何解決?(阿里面試題)
本文匯總了阿里熔任、騰訊褒链、百度、美團(tuán)笋敞、頭條等大廠最新技術(shù)面試題目共計(jì)414題,專家出題人分析匯總以及答案也在逐步補(bǔ)全中荠瘪。目前該項(xiàng)目在GitHub上已摘得超18000個(gè)Star夯巷,內(nèi)容分為阿里篇、華為篇哀墓、百度篇趁餐、騰訊篇、美團(tuán)篇篮绰、頭條篇后雷、滴滴篇、京東篇、MySQL篇臀突、Redis篇勉抓、MongDB篇、ZooKeeper篇候学、Nginx篇藕筋、算法篇、內(nèi)存篇梳码、CPU篇隐圾、磁盤篇、網(wǎng)絡(luò)通信篇掰茶、安全篇暇藏、并發(fā)篇。不多說了濒蒋,來一起看看吧盐碱。(文末附有免費(fèi)領(lǐng)取方式)
阿里篇(共計(jì)27題)
-
1.1.1 如何實(shí)現(xiàn)一個(gè)高效的單向鏈表逆序輸出?
出題人:阿里巴巴出題專家:昀龍/阿里云彈性人工智能負(fù)責(zé)人
參考答案:下面是其中一種寫法啊胶,也可以有不同的寫法甸各,比如遞歸等。供參考焰坪。
typedef struct node{
int data;
struct node* next;
node(int d):data(d), next(NULL){}
}node;
void reverse(node* head)
{
if(NULL == head || NULL == head->next){
return;
}
node* prev=NULL;
node* pcur=head->next;
node* next;
while(pcur!=NULL){
if(pcur->next==NULL){
pcur->next=prev;
break;
}
next=pcur->next;
pcur->next=prev;
prev=pcur;
pcur=next;
}
head->next=pcur;
node*tmp=head->next;
while(tmp!=NULL){
cout<<tmp->data<<"\t";
tmp=tmp->next;
}
}
1.1.2 已知sqrt(2)約等于1.414趣倾,要求不用數(shù)學(xué)庫,求sqrt(2)精確到小數(shù)點(diǎn)后10位
-
1.1.3 給定一個(gè)二叉搜索樹(BST)某饰,找到樹中第 K 小的節(jié)點(diǎn)
出題人:阿里巴巴出題專家:文景/阿里云 CDN 資深技術(shù)專家
參考答案:
** 考察點(diǎn)**
1儒恋、基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的理解和編碼能力
2、遞歸使用
** 示例**
5
/ \
3 6
/ \
2 4
/
1
說明:保證輸入的 K 滿足 1<=K<=(節(jié)點(diǎn)數(shù)目)
樹相關(guān)的題目黔漂,第一眼就想到遞歸求解诫尽,左右子樹分別遍歷。聯(lián)想到二叉搜索樹的性質(zhì)炬守,root 大于左子樹牧嫉,小于右子樹,如果左子樹的節(jié)點(diǎn)數(shù)目等于 K-1减途,那么 root 就是結(jié)果酣藻,否則如果左子樹節(jié)點(diǎn)數(shù)目小于 K-1,那么結(jié)果必然在右子樹鳍置,否則就在左子樹辽剧。因此在搜索的時(shí)候同時(shí)返回節(jié)點(diǎn)數(shù)目,跟 K 做對(duì)比税产,就能得出結(jié)果了怕轿。
/**
* Definition for a binary tree node.
**/
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution {
private class ResultType {
boolean found; // 是否找到
int val; // 節(jié)點(diǎn)數(shù)目
ResultType(boolean found, int val) {
this.found = found;
this.val = val;
}
}
public int kthSmallest(TreeNode root, int k) {
return kthSmallestHelper(root, k).val;
}
private ResultType kthSmallestHelper(TreeNode root, int k) {
if (root == null) {
return new ResultType(false, 0);
}
ResultType left = kthSmallestHelper(root.left, k);
// 左子樹找到偷崩,直接返回
if (left.found) {
return new ResultType(true, left.val);
}
// 左子樹的節(jié)點(diǎn)數(shù)目 = K-1,結(jié)果為 root 的值
if (k - left.val == 1) {
return new ResultType(true, root.val);
}
// 右子樹尋找
ResultType right = kthSmallestHelper(root.right, k - left.val - 1);
if (right.found) {
return new ResultType(true, right.val);
}
// 沒找到撞羽,返回節(jié)點(diǎn)總數(shù)
return new ResultType(false, left.val + 1 + right.val);
}
}
-
1.1.4 LRU緩存機(jī)制
題目:LRU 緩存機(jī)制設(shè)計(jì)和實(shí)現(xiàn)一個(gè) LRU(最近最少使用)緩存數(shù)據(jù)結(jié)構(gòu)阐斜,使它應(yīng)該支持以下操作:get 和 put。get(key) - 如果 key 存在于緩存中放吩,則獲取 key 的 value(總是正數(shù))智听,否則返回 -1。put(key,value) - 如果 key 不存在渡紫,請(qǐng)?jiān)O(shè)置或插入 value到推。當(dāng)緩存達(dá)到其容量時(shí),它應(yīng)該在插入新項(xiàng)目之前使最近最少使用的項(xiàng)目作廢惕澎。
-
1.1.5 關(guān)于epoll和select的區(qū)別莉测,以下哪些說法是正確的(多選)
A. epoll 和 select 都是 I/O 多路復(fù)用的技術(shù),都可以實(shí)現(xiàn)同時(shí)監(jiān)聽多個(gè) I/O 事件的狀態(tài)唧喉。
B. epoll 相比 select 效率更高捣卤,主要是基于其操作系統(tǒng)支持的I/O事件通知機(jī)制,而 select 是基于輪詢機(jī)制八孝。
C. epoll 支持水平觸發(fā)和邊沿觸發(fā)兩種模式董朝。
D. select 能并行支持 I/O 比較小,且無法修改干跛。
出題人:阿里巴巴出題專家:寈峰/阿里技術(shù)專家
參考答案:A子姜,B,C
【延伸】那在高并發(fā)的訪問下楼入,epoll使用那一種觸發(fā)方式要高效些哥捕?當(dāng)使用邊緣觸發(fā)的時(shí)候要注意些什么東西?
1.1.6 從innodb的索引結(jié)構(gòu)分析嘉熊,為什么索引的 key 長度不能太長
1.1.7 MySQL的數(shù)據(jù)如何恢復(fù)到任意時(shí)間點(diǎn)遥赚?
-
……
華為篇(共計(jì)50題)
2.1.0 static有什么用途?(請(qǐng)至少說明兩種)
2.1.1 引用與指針有什么區(qū)別阐肤?
2.1.2 描述實(shí)時(shí)系統(tǒng)的基本特性
-
……
百度篇(共計(jì)48題)
3.1.0 在函數(shù)內(nèi)定義一個(gè)字符數(shù)組凫佛,用gets函數(shù)輸入字符串的時(shí)候,如果輸入越界孕惜,為什么程序會(huì)崩潰愧薛?
3.1.1 C++中引用與指針的區(qū)別
3.1.2 C/C++程序的內(nèi)存分區(qū)
-
……
騰訊篇(共計(jì)82題)
Java基礎(chǔ)
4.1.0 JAVA中的幾種基本數(shù)據(jù)類型是什么,各自占用多少字節(jié)诊赊。
4.1.1 String類能被繼承嗎厚满,為什么府瞄。
4.1.2 String碧磅,Stringbuffer碘箍,StringBuilder的區(qū)別。
-
4.1.3 ArrayList和LinkedList有什么區(qū)別鲸郊。
JVM
4.4.2 什么情況下會(huì)發(fā)生棧內(nèi)存溢出丰榴。
4.4.3 JVM的內(nèi)存結(jié)構(gòu),Eden和Survivor比例秆撮。
-
4.4.4 JVM內(nèi)存為什么要分成新生代四濒,老年代,持久代职辨。新生代中為什么要分為Eden和Survivor盗蟆。
開源框架
4.5.5 簡單講講tomcat結(jié)構(gòu),以及其類加載器流程舒裤,線程模型等喳资。
4.5.6 tomcat如何調(diào)優(yōu),涉及哪些參數(shù) 腾供。
-
4.5.7 ……
美團(tuán)篇(共計(jì)40題)
5.1.0 java虛擬機(jī)內(nèi)存模型
5.1.1 內(nèi)存溢出一般發(fā)生在哪個(gè)區(qū)仆邓?永久代會(huì)不會(huì)導(dǎo)致內(nèi)存溢出?
5.1.2 動(dòng)態(tài)加載類的框架了解哪些伴鳖?
-
5.1.3 ……
頭條篇(共計(jì)37題)
6.1.0 5個(gè)人去一個(gè)海島尋寶节值,最后一共找到了100枚金幣。他們約定了一個(gè)分配方案榜聂。
6.1.1 給你一個(gè)有序整數(shù)數(shù)組搞疗,數(shù)組中的數(shù)可以是正數(shù)、負(fù)數(shù)峻汉、零贴汪,請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),這個(gè)函數(shù)返回一個(gè)整數(shù):返回這個(gè)數(shù)組所有數(shù)的平方值中有多少種不同的取值休吠。
6.1.2 一個(gè)環(huán)有10個(gè)節(jié)點(diǎn)扳埂,編號(hào)0-9。從0點(diǎn)出發(fā)瘤礁,走N步又能回到0點(diǎn)阳懂,共有多少種走法?
-
6.1.3 ……
滴滴篇(共計(jì)12題)
7.1.0 B+樹柜思、B-樹的區(qū)別?
7.1.1 數(shù)據(jù)庫隔離級(jí)別岩调,幻讀和不可重復(fù)讀的區(qū)別?
7.1.2 有hell, well, hello, world等字符串組赡盘,現(xiàn)在問能否拼接成helloworld号枕,代碼實(shí)現(xiàn)。
-
7.1.3 ……
京東篇(共計(jì)13題)
8.1.0 一般sql注入怎么發(fā)現(xiàn)觸點(diǎn)的陨享,從源碼闡述sqlmap如何測試注入點(diǎn)的葱淳。
8.1.1 masscan掃描端口時(shí)靠什么檢測钝腺,為什么這么快? 請(qǐng)?jiān)斒?
8.1.2 你寫過哪些小工具,你為你使用過的工具做過什么修改.
-
8.1.3 ……
MySQL篇(共計(jì)9題)
9.1.0 主鍵 超鍵 候選鍵 外鍵
9.1.1 數(shù)據(jù)庫事務(wù)的四個(gè)特性及含義
9.1.2 視圖的作用赞厕,視圖可以更改么艳狐?
-
9.1.3 ……
Redis篇(共計(jì)10題)
-
10.1.0 使用Redis有哪些好處?
參考答案:
(1) 速度快皿桑,因?yàn)閿?shù)據(jù)存在內(nèi)存中毫目,類似于HashMap,HashMap的優(yōu)勢就是查找和操作的時(shí)間復(fù)雜度都是O(1)
(2) 支持豐富數(shù)據(jù)類型诲侮,支持string镀虐,list,set沟绪,sorted set粉私,hash
(3) 支持事務(wù),操作都是原子性近零,所謂的原子性就是對(duì)數(shù)據(jù)的更改要么全部執(zhí)行诺核,要么全部不執(zhí)行
(4) 豐富的特性:可用于緩存,消息久信,按key設(shè)置過期時(shí)間窖杀,過期后將會(huì)自動(dòng)刪除
10.1.1 redis相比memcached有哪些優(yōu)勢?
10.1.2 redis常見性能問題和解決方案
10.1.3 MySQL里有2000w數(shù)據(jù)裙士,redis中只存20w的數(shù)據(jù)入客,如何保證redis中的數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)
-
……
MongDB篇(共計(jì)47題)
11.1.0 什么是MongoDB?
11.1.1 MongoDB是由哪種語言寫的腿椎?
11.1.2 MongoDB的優(yōu)勢有哪些桌硫?
-
11.1.3 ……
Zookeeper篇(共計(jì)19題)
12.1.0 zookeeper是什么?
12.1.1 zookeeper提供了什么啃炸?
12.1.2 zookeeper文件系統(tǒng)
-
12.1.3 ……
Nginx篇(共計(jì)20題)
13.1.0 請(qǐng)解釋一下什么是Nginx?
13.1.1 請(qǐng)列舉Nginx的一些特性?
13.1.2 請(qǐng)列舉Nginx和Apache 之間的不同點(diǎn)?
13.1.3 ……
(以下內(nèi)容持續(xù)補(bǔ)全中……)
算法篇
內(nèi)存篇
cpu篇
磁盤篇
網(wǎng)絡(luò)通信篇
安全篇
并發(fā)篇
獲取Java資料铆隘、414道面試題目及答案解析私信我即可