写点什么

这 400 道面试题,决定了你去 BAT 还是 TMD

  • 2021 年 11 月 12 日
  • 本文字数:2486 字

    阅读完需:约 8 分钟

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;thi


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


s.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 篇

评论

发布
暂无评论
这400道面试题,决定了你去BAT还是TMD