阿里、腾讯、百度等大厂面试都考核哪些技术点?
关于MySQL、Redis面试官一般都会问什么?
为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?(阿里面试题)
本文汇总了阿里、腾讯、百度、美团、头条等大厂最新技术面试题目共计414题,专家出题人分析汇总以及答案也在逐步补全中。目前该项目在GitHub上已摘得超18000个Star,内容分为阿里篇、华为篇、百度篇、腾讯篇、美团篇、头条篇、滴滴篇、京东篇、MySQL篇、Redis篇、MongDB篇、ZooKeeper篇、Nginx篇、算法篇、内存篇、CPU篇、磁盘篇、网络通信篇、安全篇、并发篇。不多说了,来一起看看吧。(文末附有免费领取方式)
阿里篇(共计27题)
-
1.1.1 如何实现一个高效的单向链表逆序输出?
出题人:阿里巴巴出题专家:昀龙/阿里云弹性人工智能负责人
参考答案:下面是其中一种写法,也可以有不同的写法,比如递归等。供参考。
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,要求不用数学库,求sqrt(2)精确到小数点后10位
-
1.1.3 给定一个二叉搜索树(BST),找到树中第 K 小的节点
出题人:阿里巴巴出题专家:文景/阿里云 CDN 资深技术专家
参考答案:
** 考察点**
1、基础数据结构的理解和编码能力
2、递归使用
** 示例**
5
/ \
3 6
/ \
2 4
/
1
说明:保证输入的 K 满足 1<=K<=(节点数目)
树相关的题目,第一眼就想到递归求解,左右子树分别遍历。联想到二叉搜索树的性质,root 大于左子树,小于右子树,如果左子树的节点数目等于 K-1,那么 root 就是结果,否则如果左子树节点数目小于 K-1,那么结果必然在右子树,否则就在左子树。因此在搜索的时候同时返回节点数目,跟 K 做对比,就能得出结果了。
/**
* 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; // 节点数目
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);
}
// 左子树的节点数目 = K-1,结果为 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);
}
// 没找到,返回节点总数
return new ResultType(false, left.val + 1 + right.val);
}
}
-
1.1.4 LRU缓存机制
题目:LRU 缓存机制设计和实现一个 LRU(最近最少使用)缓存数据结构,使它应该支持以下操作:get 和 put。get(key) - 如果 key 存在于缓存中,则获取 key 的 value(总是正数),否则返回 -1。put(key,value) - 如果 key 不存在,请设置或插入 value。当缓存达到其容量时,它应该在插入新项目之前使最近最少使用的项目作废。
-
1.1.5 关于epoll和select的区别,以下哪些说法是正确的(多选)
A. epoll 和 select 都是 I/O 多路复用的技术,都可以实现同时监听多个 I/O 事件的状态。
B. epoll 相比 select 效率更高,主要是基于其操作系统支持的I/O事件通知机制,而 select 是基于轮询机制。
C. epoll 支持水平触发和边沿触发两种模式。
D. select 能并行支持 I/O 比较小,且无法修改。
出题人:阿里巴巴出题专家:寈峰/阿里技术专家
参考答案:A,B,C
【延伸】那在高并发的访问下,epoll使用那一种触发方式要高效些?当使用边缘触发的时候要注意些什么东西?
1.1.6 从innodb的索引结构分析,为什么索引的 key 长度不能太长
1.1.7 MySQL的数据如何恢复到任意时间点?
-
……
华为篇(共计50题)
2.1.0 static有什么用途?(请至少说明两种)
2.1.1 引用与指针有什么区别?
2.1.2 描述实时系统的基本特性
-
……
百度篇(共计48题)
3.1.0 在函数内定义一个字符数组,用gets函数输入字符串的时候,如果输入越界,为什么程序会崩溃?
3.1.1 C++中引用与指针的区别
3.1.2 C/C++程序的内存分区
-
……
腾讯篇(共计82题)
Java基础
4.1.0 JAVA中的几种基本数据类型是什么,各自占用多少字节。
4.1.1 String类能被继承吗,为什么。
4.1.2 String,Stringbuffer,StringBuilder的区别。
-
4.1.3 ArrayList和LinkedList有什么区别。
JVM
4.4.2 什么情况下会发生栈内存溢出。
4.4.3 JVM的内存结构,Eden和Survivor比例。
-
4.4.4 JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。
开源框架
4.5.5 简单讲讲tomcat结构,以及其类加载器流程,线程模型等。
4.5.6 tomcat如何调优,涉及哪些参数 。
-
4.5.7 ……
美团篇(共计40题)
5.1.0 java虚拟机内存模型
5.1.1 内存溢出一般发生在哪个区?永久代会不会导致内存溢出?
5.1.2 动态加载类的框架了解哪些?
-
5.1.3 ……
头条篇(共计37题)
6.1.0 5个人去一个海岛寻宝,最后一共找到了100枚金币。他们约定了一个分配方案。
6.1.1 给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。
6.1.2 一个环有10个节点,编号0-9。从0点出发,走N步又能回到0点,共有多少种走法?
-
6.1.3 ……
滴滴篇(共计12题)
7.1.0 B+树、B-树的区别?
7.1.1 数据库隔离级别,幻读和不可重复读的区别?
7.1.2 有hell, well, hello, world等字符串组,现在问能否拼接成helloworld,代码实现。
-
7.1.3 ……
京东篇(共计13题)
8.1.0 一般sql注入怎么发现触点的,从源码阐述sqlmap如何测试注入点的。
8.1.1 masscan扫描端口时靠什么检测,为什么这么快? 请详述.
8.1.2 你写过哪些小工具,你为你使用过的工具做过什么修改.
-
8.1.3 ……
MySQL篇(共计9题)
9.1.0 主键 超键 候选键 外键
9.1.1 数据库事务的四个特性及含义
9.1.2 视图的作用,视图可以更改么?
-
9.1.3 ……
Redis篇(共计10题)
-
10.1.0 使用Redis有哪些好处?
参考答案:
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
10.1.1 redis相比memcached有哪些优势?
10.1.2 redis常见性能问题和解决方案
10.1.3 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
-
……
MongDB篇(共计47题)
11.1.0 什么是MongoDB?
11.1.1 MongoDB是由哪种语言写的?
11.1.2 MongoDB的优势有哪些?
-
11.1.3 ……
Zookeeper篇(共计19题)
12.1.0 zookeeper是什么?
12.1.1 zookeeper提供了什么?
12.1.2 zookeeper文件系统
-
12.1.3 ……
Nginx篇(共计20题)
13.1.0 请解释一下什么是Nginx?
13.1.1 请列举Nginx的一些特性?
13.1.2 请列举Nginx和Apache 之间的不同点?
13.1.3 ……
(以下内容持续补全中……)
算法篇
内存篇
cpu篇
磁盘篇
网络通信篇
安全篇
并发篇
获取Java资料、414道面试题目及答案解析私信我即可