2019秋招面经总结

2019.6.12 vivo提前批后台(安卓方向)

面向对象的三大特征

hashmap的底层实现

https和http的区别

网页请求流程

插入排序

小白菜价20W

2019.7.6 中兴提前批

JVM内存回收算法

写单例

接口和抽象类的区别

设计模式

2019.7.9 字节跳动提前批

一面:

编程题:生产者消费者模式,n个排序数组求前k个数

项目中用到多线程的地方,商品详情页面

熔断的概念

秒杀的业务逻辑

事务的ACID

组合索引,最左匹配原则

TCP三次握手和四次挥手

二面:

编程题:写单例,链表反转(两个节点为一个单位进行反转)

破坏单例模式

数据库索引,聚簇索引和辅助索引的区别,主键索引和聚簇索引的区别

索引底层为什么使用B+树而不使用其它类型的排序树,比如说B树

主键自增的优缺点

数据库中的数据在文件中是怎么存储的

get和post的区别,什么是幂等?什么是安全?

http报文结构

http和tcp的区别

https中用到的加密算法,为什么两种结合使用,具体过程讲一下

三面:

编程题:36进制加法

项目介绍

Redis底层原理,数据类型

url地址解析过程

TCP拥塞控制、慢开始、快重传、滑动窗口

设计一个内存池,类比线程池和数据库连接池

垃圾回收算法、垃圾收集器

进程通信的方式

自己的优势和劣势

抗压能力

2019.7.15 字节跳动四面

算法题:给定一个只包含0~9的数组,然后再给定一个K值,对数组里面的数字进行组合,输出所有比K大的组合数中最小的一个。

nums = [4,1,4,2,7,8] K=448

输出:712

操作系统的基本功能

cookie和session的区别

跨域问题,如何解决

多个线程能否监听同一个TCP端口

2019.8.12 顺丰科技第二轮技术面

1、URL解析过程

2、POST和GET请求的区别

2、多态的作用,怎么实现

3、static关键字的作用

4、synchronized的原理

5、Java中的异常分类

6、进程和线程的区别

7、数组区间合并

2019.8.16 美团一面

1、服务端渲染和客户端渲染的区别,为什么要使用服务端渲染,JSP了解吗,工作机制是什么?

2、Java内存区域

3、方法区的作用

4、堆内存的划分,年轻代和老年代,分别使用的垃圾回收算法

5、JVM默认的垃圾回收算法

6、HTTP和HTTPS的区别,HTTPS使用的加密算法

7、通信双方如何认证?如何避免证书被伪造?

8、Spring AOP

9、jdk动态代理和CGLIB动态代理的区别,其生效时期是什么时候?

10、ES索引原理,Mysql索引原理,ES区间查询怎么实现?(跳表)

11、一条长度为l的线段,随机在其上选2个点,将线段分为3段,问这3个子段能组成一个三角形的概率是多少?

12、代码题:给定已经按升序排列、由不同整数组成的数组 A,返回满足 A[i] == i 的最小索引 i。如果不存在这样的 i,返回 -1。

例子:输入【-1,0,2,3,4】返回“2”

2019.8.17 腾讯测开一面

1、String、StringBuffer、StringBuilder的区别

2、数据库事务的特点

3、数据库中的锁

4、TCP三次握手

5、前端了解吗?Vue、JQuery、React的区别

6、冒泡排序

2019.8.18 猿辅导一面

项目介绍

SpringBoot 自动配置原理

SpringCloud中Eureka服务注册中心和Zuul网关的原理

数据库的隔离级别,如何实现可重复读

数据库的索引有哪些,介绍B+树索引

Redis的线程模型,常用的数据结构

RabbitMQ的消息模型

编程题:leetcode695 岛屿的最大面积

编程题:一个栈中存放无序数字,使用额外空间栈对其进行排序

2019.8.20 美团二面

项目介绍

反向代理是什么

synchronized底层原理,普通同步方法和静态同步方法的区别

mysql的索引原理

数据库中的乐观锁和悲观锁

数据库中视图的概念,视图可以加快查询吗?

数据库的事务特性,mysql的隔离级别

HashMap是线程安全的吗?ConcurrentHashMap的底层实现原理,CAS是什么?

Redis的持久化机制?AOF文件和RDB文件哪个大?

线程池原理,核心参数介绍,拒绝策略

==和equals的区别,hashcode的作用,与equals有什么关系

SpringBoot的原理

Mybatis的动态SQL

编程题:合并两个有序链表

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

2019.8.23 滴滴一面

常用数据结构

堆的定义,排序的过程,为什么可以原地操作?放在数组里面,完全二叉树

介绍AVL、BST、红黑树。为什么有了BST还要使用红黑树?

Stack怎么实现的

链表和数组的区别

HashMap的底层原来,为什么扩容是2倍?

LinkedHashMap的原理,可以用来干什么?LRU,介绍LRU,页面置换为什么使用LRU?局部性原理,提高缓存命中率。

设计模式:单例,工厂,模板方法,策略

代理设计模式对应OO模型中的哪一种?组合模型

策略设计模式对应OO模型中的哪一种?

面向对象的三大特征,多态是怎么实现的?Java如何实现多继承,多继承存在什么问题?

volatile的作用:禁止重排序,保证可见性

synchronized的底层原理

轻量级锁和重量级锁,乐观锁和悲观锁

自旋锁的作用是什么?降低线程切换的成本

String是线程安全的吗?final关键字的作用

Spring AOP原理,动态代理的方式

equals和hascode的关系

JVM运行时内存区域

垃圾回收算法、可达性分析算法,finallize的作用

年轻代为什么要分三个区域

2019.8.24 猿辅导二面

介绍项目

Redis的基本数据结构,Set怎么实现的,跳表的插入删除查询时间复杂度

一致性hash

负载均衡算法有哪些

编程题1:1、4、7、8、3、2找最大值

public class Main {
    public static void main(String[] args) {
        int[] nums = {1,4,7,8,3,2};
        int i = 0, j = nums.length - 1;
        while(i <= j){
            int mid = (i + j) / 2;
            int temp = nums[mid];
            int left = 0, right = 0;
            if(mid - 1 >= 0){
                left = nums[mid - 1];
            }
            if(mid + 1 < nums.length){
                right = nums[mid + 1];
            }
            if(nums[mid] > left && nums[mid] > right){
                System.out.println(nums[mid]);
                break;
            }
            if(nums[mid] > left && nums[mid] < right){
                i = mid + 1;
            }else{
                j = mid - 1;
            }
        }
    }
}

编程题2:节点取值0/1的二叉树,删除全部为0的叶子节点

public class Main {
    
    public static TreeNode solve(TreeNode root){
        if(root == null){
            return null;
        }
        
        TreeNode left = solve(root.left);
        TreeNode right = solve(root.right);
        root.left = left;
        root.right = right;
        if(left == null && right == null && root.val == 0){
           return null;
        }
        return root;
    }
}

简洁版:

private TreeNode solve(TreeNode root) {
    if (root == null){
        return null;
    }
    root.left = solve(root.left);
    root.right = solve(root.right);
    if (root.left == null && root.right == null && root.val == 0){
        return null;
    }
    return root;
}

2019.8.28 美团三面

HashMap的put和get过程,时间复杂度度是多少?HashMap是如何降低碰撞的概率?

Spring IOC和AOP

编程题:矩阵中左上角到右下角的路径总数

2019.9.17 百度一面

两个栈实现队列

跳台阶

static方法中可以引用非static方法吗?

Spring中IOC和AOP的原理

mysql中的脏读和幻读概念

ThreadLocal

垃圾回收算法和垃圾收集器

你可能感兴趣的:(面经)