开头
自我介绍 balabala。
讲讲你的实习。
数据库
数据库优化你能想到哪些。
数据库分表的操作。
索引有哪些。
索引底层的实现。 B+树
网络
各个网络层次有啥协议。
你实现过协议么。 自定义应用层聊天程序
WebSocket 怎么实现的。
WebSocket 的好处。
你说说客户端发送到服务器端经过的网络层次和步骤。
三次握手和为什么三次。
防止过期报文,建立连接。
如果客户端没有再次发送 ACK 会发生什么。
不会建立连接
Redis
你讲讲你知道 Redis 有哪些知识。
分布式锁是什么。
Java
HashMap 底层的实现讲讲。
数组加链表,将对象Hash,计算出放在数组中的位置,当发生Hash冲突或放在同一个位置时,用链表插入到后面,当链表长度超过8,且数组大于一定长度,链表会转为红黑树。
HashMap 扩容的机制和扩容的时候的里面元素的位置是否会改变。
当元素个数大于一个上限,总容量的3/4时,会增加数组长度,重新计算放的位置
HashMap 的 hashCode 为什么要再 hash,你来设计一个 hash 算法。
计算出存放位置,对数组容量取模
ConcurrentHashMap 怎么实现并发。
ConcurrentHashMap 加锁机制。
其他
你会 C++ 么。
你了解哪些什么新技术。
腾讯的Java问的比较简单。
1、Java垃圾回收 。
2、交换两个数字,不用第三个数。
使用异或实现
3、topk问题(堆,排序)
4、能不能O(n)复杂度的(快排分割)
5、堆和分治法的比较,使用场景。
6、ACM中的用到的算法随便说两个。
7、手写代码:给出两个版本号比较大小,比如 1.2.1 < 1.10.2.0 。
8、mysql char 和 varchar的区别,varchar括号里的数字是什么意义,单位是什么。
9、进程和线程区别,为什么用多线程。
一面:
1.问项目
2.基本数据类型
3.什么时候用包装器类型,什么时候用基本数据类型
使用Java集合的时候需要使用包装类, 其他时候可以使用基本类型
4.异常和错误?捕获异常后,什么时候直接处理,什么时候抛出去给上一层处理?
5.抽象类和接口的区别
6.数据库查询速度慢时用什么去检查为什么慢?怎么优化?
7.什么情况下用索引?
8.Linux看过吗?
9.http和https的区别?
10.http和tcp的关系
11.post和get
12.讲讲四次挥手?tcp四次挥手中客户端ack断掉了没有发出去怎么办?
13.用户、角色、权限。数据库该怎么设计?
二面:
1.问项目
2.list和set是有序的吗
list不是,set是
3.多线程的实现方法?
4.具体讲讲sychronized?常用场景?
5.项目里具体用过哪个多线程实现?(我答的ThreadLocal)
6.spring、springMVC、springboot的区别
7.为什么要用spring boot?
8.了解哪些设计模式?项目中用过什么设计模式?
9.代理模式具体实现过程?
10.数据库几亿行时怎么优化?怎么垂直优化?
11.spring boot中用过哪些starter
12.给乱序数组排序,map、set的子类里有哪些是自主排序的?
严格来说,下面的题目偏社招
拼多多一面
- 自我介绍
- 介绍一下mysql索引?为什么用B+树?
- 网络IO模型?什么是多路复用IO?select和epoll的差别?select具体过程?
- java类加载机制?双亲委派模型的好处?
- 进程和线程的区别?线程是不是越多越好,为什么?操作系统怎么调度的,调度算法?java中cpu调度是线程还是进程?
cpu调度的是线程,根据优先级抢占调度
- 数据库事务?隔离级别?
- java线程变量怎么实现的?内存模型?
- 手撕代码
- 用数组模拟循环链表
- 堆排序实现
- JAVA并发包组件了解多少
- 线程的一个状态转换图
- HashMap和HashTable以及CocurrentHashMap详细说明
- SpringMVC的整个执行流程
拼多多二面
- 自我介绍
- 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?怎么解决分库分表?
- 数据库事务特点?事务隔离级别?项目中的事务实现?脏读、不可重复读、幻读各举个例子?
- Spring bean的生命周期?默认创建的模式是什么?不想单例怎么办?
- 谈谈Kafka和ZooKeeper了解情况?
- 设计模式,单例模式,怎么保证线程安全?锁效率太低,怎么提高效率?CAS?CAS本质是什么?什么是原子性?Compare and Swap,为什么能保证原子性(涉及到CPU指令)?分布式锁?
- 还有什么设计模式?工厂模式有几种,都讲讲?
- 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么?enum类型的值一般怎么存?如果有一个十几位的小数为了不丢失精度怎么存?tinyint几个字节,int几个字节?
拼多多三面
- 项目介绍
- Redis简要介绍下,有哪些常用的数据结构?
String,List,Hash,Set,ZSet
- Redis是单线程的?Redis为什么查询数据这么快?
- Redis并发竞争key如何来解决?
- 有接触过哪些消息队列中间件?如何来选型?
- 谈谈你的SOA以及微服务的理解?
- 具体谈谈Spring Cloud服务和注册?
- 分布式场景面临的最大挑战是什么?
- 分布式场景数据同步如何来解决?
蚂蚁金服一面:主要问的基础知识
- java线程同步都有哪几种方式,Synchronized和ReentrantLock的区别
- ReentrantLock底层是怎么实现的,怎么实现的超时获取锁。
- cas的原理,变量要用哪个关键字修饰,volatile实现的原理,进而引申到了java虚拟机的内存模型。
- 介绍一下java虚拟机内存模型,然后继续讨论volatile。
- 线程池种类,哪四种 workqueue分别是什么
- 什么时候触发minor GC 什么时候触发full GC
- 聊点数据库,一般选什么样的字段做主键,有什么选取原则吗,用种子自增来做主键,为什么每次种子要加1,加2加3可以吗。
- sql优化有哪些思路
- 索引使用注意事项
- InnoDB数据模型,B+树具体说说都保存了什么,叶子节点保存了什么
- 你有什么想问我的。
蚂蚁金服二面:主要是围绕项目
- 介绍一下你的项目(主要是技术难点),请画出项目架构设计图和部署图?
- dubbo负载均衡算法有哪些,如果让你实现一致性hash的dubbo负载均衡算法,你会怎么实现?
- zookeeper实现的分布式锁的原理,以及redis具体怎么实现分布式锁?
- 限流是怎么实现的,hystrix介绍一下。
- dubbo有哪些模块,底层通信的原理。
- spring的ioc,aop是怎么实现的。
- 线上问题的解决思路,程序运行一段时间,突然内存溢出,重启后,过一段时间又内存溢出,怎么排查问题。
蚂蚁金服三面:主要问解决问题的思路
- 如果让你实现一个MQ,怎么样保证消息不丢失?
- 硬盘io速度会变慢,有什么解决办法吗?
- mysql的innodb索引数据结构为什么是b+树,用hash来实现可以吗?
- 分布式事务的实现?
- 如何解决redis和mysql数据一致性?
- 常见的MySQL主从同步方案有哪些?优劣势比较过?
- 先谈秒杀的设计思路?
- 再谈谈秒杀如何防止超卖?
- 你有什么想问我的?
快手一面(一个小时十分钟)
- 自我介绍
- 说说B+树和B树的区别,优缺点等?
B+树的数据在叶子节点
- 聊聊Spring,主要IOC等等
- 多线程JUC包下的一些常见的类,比如CountDownLatch、Semaphore等
- 锁的概念,锁相关的关键字,volatile,synchronized。还比较了ReentrantLock与synchronized。
- 你了解哪些收集器?CMS和G1。详细谈谈G1的优点?什么时候进行Full GC呢?
- Spring中涉及的一些设计模式
- 算法题:无序数列中求第k大的数(维护最小堆,然后依次遍历,与堆顶比较)
- MySQL创建索引的原则,好处
- 怎么实现一个线程安全的计数器?
快手二面(四十多分钟)
- 设计模式:讲了单例,工厂方法,抽象工厂,策略模式,观察者模式,代理模式,还顺便讲了下spring动态代理的实现原理
- 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
- HashMap的底层数据结构
- 红黑树的具体结构及实现,红黑树与查找树的区别体现
- 接着聊ConcurrentHashMap,底层实现
- HashMap哈希函数的认识,JDK1.8采用的hash函数
- 数据库索引,索引底层的实现,B+树的结构以及与普通查找树的优点
- TCP三次握手四次挥手,四次挥手过程中服务端的哪几种状态,哪几种包
- 已经有一个查询好友的接口,设计一个微信朋友圈,可以实现发表朋友圈,添加评论,查看评论等功能。主要是设计数据结构
快手三面(50分钟:主要分布式这块)
- 你对快手的了解,和抖音的区别,聊项目
- 项目中用到dubbo?那你说说什么是rpc框架?和http调用的区别是什么?
- Redis有哪些数据结构?持久化方案和区别?
- Redis哨兵、集群的设计原理和区别?
- Redis缓存和数据库会存在一致性问题吗?怎么解决
- Kafka怎么保证数据可靠性?讲了生产者端发送消息到broker持久化,分区和副本机制,消费者消费消息的at-least-once和at-most-once?怎么实现Exactly-Once?