面试刷题9-25

开头

自我介绍 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的子类里有哪些是自主排序的?

 

严格来说,下面的题目偏社招

拼多多一面

  1. 自我介绍
  2. 介绍一下mysql索引?为什么用B+树?
  3. 网络IO模型?什么是多路复用IO?select和epoll的差别?select具体过程?
  4. java类加载机制?双亲委派模型的好处?
  5. 进程和线程的区别?线程是不是越多越好,为什么?操作系统怎么调度的,调度算法?java中cpu调度是线程还是进程?

cpu调度的是线程,根据优先级抢占调度

  1. 数据库事务?隔离级别?
  2. java线程变量怎么实现的?内存模型?
  3. 手撕代码
  4. 用数组模拟循环链表
  5. 堆排序实现
  6. JAVA并发包组件了解多少
  7. 线程的一个状态转换图
  8. HashMap和HashTable以及CocurrentHashMap详细说明
  9. SpringMVC的整个执行流程

拼多多二面

  1. 自我介绍
  2. 数据库索引?B+树?为什么要建索引?什么样的字段需要建索引,建索引的时候一般考虑什么?怎么解决分库分表?
  3. 数据库事务特点?事务隔离级别?项目中的事务实现?脏读、不可重复读、幻读各举个例子?
  4. Spring bean的生命周期?默认创建的模式是什么?不想单例怎么办?
  5. 谈谈Kafka和ZooKeeper了解情况?
  6. 设计模式,单例模式,怎么保证线程安全?锁效率太低,怎么提高效率?CAS?CAS本质是什么?什么是原子性?Compare and Swap,为什么能保证原子性(涉及到CPU指令)?分布式锁?
  7. 还有什么设计模式?工厂模式有几种,都讲讲?
  8. 数据库表怎么设计的?数据库范式?设计的过程中需要注意什么?enum类型的值一般怎么存?如果有一个十几位的小数为了不丢失精度怎么存?tinyint几个字节,int几个字节?

拼多多三面

  1. 项目介绍
  2. Redis简要介绍下,有哪些常用的数据结构?

String,List,Hash,Set,ZSet

  1. Redis是单线程的?Redis为什么查询数据这么快?
  2. Redis并发竞争key如何来解决?
  3. 有接触过哪些消息队列中间件?如何来选型?
  4. 谈谈你的SOA以及微服务的理解?
  5. 具体谈谈Spring Cloud服务和注册?
  6. 分布式场景面临的最大挑战是什么?
  7. 分布式场景数据同步如何来解决?

 

蚂蚁金服一面:主要问的基础知识

  1. java线程同步都有哪几种方式,Synchronized和ReentrantLock的区别
  2. ReentrantLock底层是怎么实现的,怎么实现的超时获取锁。
  3. cas的原理,变量要用哪个关键字修饰,volatile实现的原理,进而引申到了java虚拟机的内存模型。
  4. 介绍一下java虚拟机内存模型,然后继续讨论volatile。
  5. 线程池种类,哪四种 workqueue分别是什么
  6. 什么时候触发minor GC 什么时候触发full GC
  7. 聊点数据库,一般选什么样的字段做主键,有什么选取原则吗,用种子自增来做主键,为什么每次种子要加1,加2加3可以吗。
  8. sql优化有哪些思路
  9. 索引使用注意事项
  10. InnoDB数据模型,B+树具体说说都保存了什么,叶子节点保存了什么
  11. 你有什么想问我的。

蚂蚁金服二面:主要是围绕项目

  1. 介绍一下你的项目(主要是技术难点),请画出项目架构设计图和部署图?
  2. dubbo负载均衡算法有哪些,如果让你实现一致性hash的dubbo负载均衡算法,你会怎么实现?
  3. zookeeper实现的分布式锁的原理,以及redis具体怎么实现分布式锁?
  4. 限流是怎么实现的,hystrix介绍一下。
  5. dubbo有哪些模块,底层通信的原理。
  6. spring的ioc,aop是怎么实现的。
  7. 线上问题的解决思路,程序运行一段时间,突然内存溢出,重启后,过一段时间又内存溢出,怎么排查问题。

蚂蚁金服三面:主要问解决问题的思路

  1. 如果让你实现一个MQ,怎么样保证消息不丢失?
  2. 硬盘io速度会变慢,有什么解决办法吗?
  3. mysql的innodb索引数据结构为什么是b+树,用hash来实现可以吗?
  4. 分布式事务的实现?
  5. 如何解决redis和mysql数据一致性?
  6. 常见的MySQL主从同步方案有哪些?优劣势比较过?
  7. 先谈秒杀的设计思路?
  8. 再谈谈秒杀如何防止超卖?
  9. 你有什么想问我的?

 

快手一面(一个小时十分钟)

  1. 自我介绍
  2. 说说B+树和B树的区别,优缺点等?

B+树的数据在叶子节点

  1. 聊聊Spring,主要IOC等等
  2. 多线程JUC包下的一些常见的类,比如CountDownLatch、Semaphore等
  3. 锁的概念,锁相关的关键字,volatile,synchronized。还比较了ReentrantLock与synchronized
  4. 你了解哪些收集器?CMS和G1。详细谈谈G1的优点?什么时候进行Full GC呢?
  5. Spring中涉及的一些设计模式
  6. 算法题:无序数列中求第k大的数(维护最小堆,然后依次遍历,与堆顶比较)
  7. MySQL创建索引的原则,好处
  8. 怎么实现一个线程安全的计数器?

快手二面(四十多分钟)

  1. 设计模式:讲了单例,工厂方法,抽象工厂,策略模式,观察者模式,代理模式,还顺便讲了下spring动态代理的实现原理
  2. 线程池有哪些参数?分别有什么用?如果任务数超过的核心线程数,会发生什么?阻塞队列大小是多少?
  3. HashMap的底层数据结构
  4. 红黑树的具体结构及实现,红黑树与查找树的区别体现
  5. 接着聊ConcurrentHashMap,底层实现
  6. HashMap哈希函数的认识,JDK1.8采用的hash函数
  7. 数据库索引,索引底层的实现,B+树的结构以及与普通查找树的优点
  8. TCP三次握手四次挥手,四次挥手过程中服务端的哪几种状态,哪几种包
  9. 已经有一个查询好友的接口,设计一个微信朋友圈,可以实现发表朋友圈,添加评论,查看评论等功能。主要是设计数据结构

快手三面(50分钟:主要分布式这块)

  1. 你对快手的了解,和抖音的区别,聊项目
  2. 项目中用到dubbo?那你说说什么是rpc框架?和http调用的区别是什么?
  3. Redis有哪些数据结构?持久化方案和区别?
  4. Redis哨兵、集群的设计原理和区别?
  5. Redis缓存和数据库会存在一致性问题吗?怎么解决
  6. Kafka怎么保证数据可靠性?讲了生产者端发送消息到broker持久化,分区和副本机制,消费者消费消息的at-least-once和at-most-once?怎么实现Exactly-Once?

你可能感兴趣的:(算法)