2019.3.4 今日头条(后台开发)
- 自我介绍
- 项目介绍
- Vue的生命周期
- Restful接口的作用
- es底层实现原理
- Web页面请求过程
- Set底层实现原理
- 二维矩阵顺时针输出
- 买卖股票的最佳时机
- json字符串处理
2019.3.8 华为(上午)
- 照着简历一条一条扒
- 微服务和模块化的区别
- 为什么使用慢开始和拥塞避免
- 为什么使用红黑树
- 一个二进制文件怎么执行
- synchronized底层实现
- 查找排序
- ARP地址解析
- 跳表
- 路由器和交换机的区别
- 路由器的二层转发和三层转发
2019.3.8 CVTE(下午)
- 项目相关
- 数据库的特性
- 数据库的隔离级别
- 数据库索引的维护
- B+树的高度如何维护
- Spring事务传播
2019.3.9 菜鸟一面
- Spring Cloud一直问到不会
- Spring Cloud里面是如何做序列化的
- 一致性哈希
- 剑指offer前两道题
- Java8用过哪些
- HashMap底层实现
- JVM在jdk1.8中的改动
- RabbitMQ如何保证消息按序到达
- Java中的异常
- 微服务异步调用
2019.3.23 头条一面
- 垃圾回收算法
- B+树
- HashMap底层实现
- 类加载器
- 36进制加法
- 阻塞队列是怎么实现的
2019.3.28 科大讯飞一面
- Spring的bean生命周期
- 为什么使用Mybatis
- Spring IOC
- Spring bean的作用域
- Spring bean是不是单例
- 数据库三大范式
- 数据库事务特性
- 数据库隔离级别
2019.3.29 小米(一面)
- 项目介绍
- 单例设计模式
- 适配器模式
- Spring @Scope注解
- Java元注解
- Spring IOC
- Spring MVC执行流程
- Spring InitializingBean接口
- HashMap
- ThreadLocal
- Serializable中的ID有什么作用
- 数据库事务
- 数据库连接池
- 隔离级别
- 最长不重复子串
- 二维矩阵搜索
2019.4.10 蘑菇街一面
- HashMap底层实现,扩容机制,头插还是尾插,为什么?
- Hashtable与HashMap的区别
- ConcurrentHashMap底层实现,1.7和1.8的区别
- ConcurrentHashMap在1.7中使用分段锁时,如果要对多个段进行修改,那么锁一个还是锁多个
- 线程的run方法和start方法区别
- 线程池原理,核心参数介绍
- 线程池的submit和execute方法区别
- 线程池的四种拒绝策略
- 当线程池中队列已满且当前线程数小于最大线程数,那么来了一个任务后需要创建新线程,那么这个线程处理的是刚刚来的任务,还是阻塞队列中的任务。
- 线程池线程数如何配置
- Spring相关知识:AOP、IOC
- Spring bean的生命周期
- 项目中秒杀流程,怎么实现?
- 库存预减用的是哪个redis方法
- 如果项目中的redis服务挂掉,如何减轻数据库的压力
- 如何避免消息队列的消费方重复消费消息
- 消息的消费结果如何返回给消息发送方
2019.4.16 度小满
一面:
-
n个1~100的数字排序
-
图的存储方式、什么是有向无环图、使用HashMap存储图
-
一个指针,删除链表中的某个节点
-
Collection和Collections的区别
-
List、Set和Map的区别
-
HashMap和Hashtable的区别
-
Java中常见的锁
-
CAP理论、Mysql支持CAP中的哪几个?
-
redis常见的数据结构,以及底层实现
-
redis set命令
-
redis ttl命令
-
redis为什么速度快
-
redis持久化方式
-
TCP/IP四层协议,数据链路层、传输层、网络层、应用层中常见的协议
-
TCP和UDP的区别
-
http和https的区别
-
对称加密和非对称加密
-
JVM介绍
-
常见的垃圾回收算法和收集器
-
SQL创建表语句、创建索引
-
CSS中id和class的区别
-
百度云的秒传功能怎么实现、百度云分享链接功能怎么实现?
二面:
-
项目介绍、画架构图
-
介绍Eureka注册中心、设计一个注册中心(关注点是什么)
-
微服务的高可用,达集群
-
常见的负载均衡算法、设计一个负载均衡算法
-
最长不重复子串
2019.4.22 京东一面
-
private、protected、private、default的区别
-
Java基本数据类型
-
Overload和Override的区别
-
Java参数是值传递还是引用传递
-
接口和抽象类的区别
-
final关键字修饰类、方法、变量
-
自动装箱和拆箱
-
Integer a = 1会创建对象么?(-128到127的范围内,不会创建新的对象,而是从IntegerCache中获取的,大于该范围的才会创建对象)
-
volatile关键字
-
mysql中索引的好处以及维护代价
-
left join、inner join、right join的区别
-
CPU的组成(CPU内部结构大概可以分为控制单元、运算单元、存储单元和时钟等几个主要部分)
-
JVM中线程共享的区域和非共享的区域
-
Eden、From、To的比例
-
什么样的对象直接进入老年代
-
设计模式中除了单例和工厂还知道哪些?
-
Spring AOP 异常通知
-
Spring IOC原理
-
Java对象序列化
-
Redis直接操作的是什么?
-
Redis数据类型有哪些?
-
OSI七层、UDP、IP、HTTP分别工作在哪一层
-
设计一个专门用于生成订单号的微服务(订单号全局唯一、如何解决订单微服务高并发的请求)
-
电商项目
2019.4.24 阿里国际事业部一面
-
HTTP和HTTPs的区别
-
http状态码
-
Spring AOP原理
-
JDK动态代理和CGLIB动态代理的区别
-
常用的集合类,HashMap底层原理,是否安全,ConcurrentHashMap的底层实现
-
synchronized和lock的区别
-
mysql分组、排序、连接,写了俩SQL
-
mysql的乐观锁和悲观锁
-
项目中redis都用在哪些方面
-
ES的底层实现原理,分词器的原理
-
Java8新特性
-
三道题:
排序
线程按顺序输出
一个原始字符串,根据每个字母出现的次数,按照ASCII码递增顺序重新调整输出
(1).原始字符串中仅可能出现“数字”和“字母”
(2).请注意区分字母大小写
示例:输入: 223aaabcccdd23 输出: 23abcd23acd2ac
2019.4.28 阿里国际事业部二面
- 项目介绍
- JWT无状态登录,同一用户在不同地点同时登录,如何处理
- 缓存穿透
- ES对document的底层操作
- maven出现jar包冲突,怎么解决
- 死锁产生的条件
- 归并排序
2019.4.29 商汤科技
一面:
-
String、StringBuilder、StringBuffer的区别
-
Integer转字符串的方法
-
HashMap:初试容量、装载因子、扩容、是否是顺序的
-
HashSet底层实现
-
继承Collection的有哪些:list、set
-
Java元注解,自定义一个注解
-
读写锁
-
synchronized与lock的区别
-
Java8中对锁的优化
-
Threadlocal
-
mysql中的模糊查询优化,说了#和$的区别,还有索引不能使用前导模糊查询
-
mysql发生死锁了,怎么解决?
-
Spring IOC容器有哪些
-
Spring中的设计模式,具体讲模板方法
-
mybatis底层原理
-
redis基本数据类型
-
手写lru(面试官想让我实现一下,我说用LinkedHashMap包装一下,然后遭到了嘲笑。。。。)
-
写一个单例,双重校验锁
-
Java8新特性
二面:
-
介绍项目
-
redis底层实现原理,过期机制、内存淘汰策略、缓存雪崩、缓存穿透、主从复制、集群
-
RabbitMq的消息类型、消息确认机制
-
FDFS原理、集群怎么搞
2019.5.5 阿里国际事业部三面
全部问场景题,架构、线程、数据库
2019.5.7 奇安信(360)
一面
- String类
- final关键字
- 包装类
- 如何在主线程中捕获子线程中的异常?(用Callable)
- Java虚拟机运行时数据区
- 如何产生栈溢出
- 类加载器、双亲委派模型
- 垃圾回收算法
- 内存分配策略
- Java集合类、HashMap
- TCP三次握手、拥塞控制
- 排序
- 在排序数组中找到所有和为target的连续子数组
二面
- 项目介绍,架构优化
- 1.8中HashMap的改动
- 为什么用ES,ES底层数据结构
- ES删除文档的原理
- Mysql存储引擎
- Mysql索引
- OSI七层模型,分别介绍每一层
- 一个数据库字段,长度设置为50和100有什么区别
- Mybatis的缓存
- Web页面请求过程
2019.5.9 美团简历面
自我介绍
链表反转
根据二叉树先序和中序序列建立二叉树
数组和链表的区别
Spring AOP
项目介绍