春招必备!百度、阿里、腾讯等最新面试400题!(含答案解析)

阿里、腾讯、百度等大厂面试都考核哪些技术点?

关于MySQL、Redis面试官一般都会问什么?

为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?(阿里面试题)

本文汇总了阿里、腾讯、百度、美团、头条等大厂最新技术面试题目共计414题,专家出题人分析汇总以及答案也在逐步补全中。目前该项目在GitHub上已摘得超18000个Star,内容分为阿里篇、华为篇、百度篇、腾讯篇、美团篇、头条篇、滴滴篇、京东篇、MySQL篇、Redis篇、MongDB篇、ZooKeeper篇、Nginx篇、算法篇、内存篇、CPU篇、磁盘篇、网络通信篇、安全篇、并发篇。不多说了,来一起看看吧。(文末附有免费领取方式

image

阿里篇(共计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<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篇

  • 磁盘篇

  • 网络通信篇

  • 安全篇

  • 并发篇

image

获取Java资料414道面试题目及答案解析私信我即可

你可能感兴趣的:(春招必备!百度、阿里、腾讯等最新面试400题!(含答案解析))