武汉场

## 一面

ConcurrentHashMap的原理。

ARP协议,如果返回的主机不是本身也返回怎么办。

UDP和TCP的区别。使用场景

TCP适用于需要建立连接的可靠通信,UDP适用于不需要建立连接。

HTTP协议基于TCP, DNS协议使用UDP。

聚集索引和非聚集索引的区别。使用场景。

数据库锁有几种(行级锁和表级锁)

CAS会有什么问题。解决办法

ABA问题

Synchronized。

https的ssl。

项目里面的接口限流是怎么做的


做题:

一个m*n的方形中有多少个小长方形。

一个字符串中的最长回文子串(写代码)

 



## 二面
讲bean的加载过程。

mybatis的创建以及调用过程。

BeanFactory和FactoryBean的区别。

循环引用怎么解决

多线程的非公平锁,怎么实现非公平,AQS为什么这么实现。为什么不直接用list,然后notifyAll。

redis的基本数据类型。

zset的底层是什么实现的。跳跃表的查找,跳跃表如何插入一个数据。

ConcurrentHashMap,segment是怎么分的。1.7和1.8有什么区别。segment扩容的时候会变大吗?

ConcurrentHashMap获取size怎么获取的。modCount获取size大小的时候,是一直循环吗?(不是,通过判断modCount来获取size多次之后如果还是没有获取成功,需要锁住全表进行获取size大小)这个回答让面试官很满意,感觉有戏。


题目:

第一个是一个二维矩阵。1表示墙壁,0表示可以走。从起点到一个终点,判断是否可以到达。选择一个方向之后必须一直走到撞墙位置,然后换一个方向。终点必须是撞墙达到而不是路过。

第二个是找到一个节点的兄弟节点

```
x
x       x
x  ->   x ->     x
```
使用层次遍历,一个节点的下一个节点就是答案。

面试官要求使用递归的方式。记录父节点。

1、如果是一个节点的左子节点并且有右子节点。则答案是右子节点。

2、如果是一个节点的左子节点并且没有右子节点,或者是一个节点的右子节点,那么他的兄弟是父节点的兄弟节点的左子节点或者右子节点。

 

## 三面

三面被面试官怼,主要是不想招人吧,当天三面的java开发就三个人。怼我linux不行(问我根本没听过的命令),怼我项目不行(反怼一面面试官说基础可以,项目以后进公司有的是项目),反正就是凉凉。一共写了三个题目。有一个思路不够清晰,他最后告诉我巴拉巴拉,但是后来一想,他说的根本不对。

 

 

哎。hashtable基本不会。没有算法题,额外写了一个单例模式????感觉可能没了,早知道说不会了。我就想试着写一下。真是不该啊

 

1、https的请求过程

2、进程和线程

3、Java单例模式代码

4、剑指offer二维数组题

5、Java的权限控制

 

 

vivo提前批(Offer Get)

一面

  • 今天天气挺好啊,温度不冷也不热
  • 先自我介绍一下
  • 怎么找的实习
  • 我们先来点比较基础的吧,说说你会哪些数据结构
  • hash,你知道hashmap吗,说说hashmap的数据结构,rehash的时候是怎么做的
  • 其他hash算法,md5知道吗

加密算法

  • 说说红黑树
  • 红黑树删除和新增操作(具体怎么平衡的忘了不知道)
  • 知道TreeMap吗,也是用红黑树实现的

了解,Java集合类

  • 说说b+树

一颗多路平衡查找树

面试刷题10-10

 

  • bitmap知道吗

bitmap就是用一个bit存一个整数的数据结构。

  • 跳表

 

  • 还会其他数据结构吗,说说ArrayList,扩容怎么做的,复制数组调用的什么方法,(回答Arrays.copyOf),为什么调用这个方法而不自己写,(回答这是个本地方法,本地方法执行较快),为什么本地方法比较快

 

  • 知道并发吗

程序交替不断运行

  • 知道哪些线程安全类(没答上来,只答了一个)

回答那个HashMap和CopyOnWriteArrayList

  • (其他的还说了线程池相关的类以及扯了线程池执行流程
  • 你了解Java虚拟机吗
  • 说说内存区域
  • 你知道垃圾收集器吗
  • 说说CMS
  • 说说G1
  • 还有知道其他的吗,我说Serial,摇头,脑抽说了Z1(实际应该是ZGC,其实只瞄了一眼,我啥都说不出)
  • CMS和G1该怎么选择
  • 说说实习,你这上面写的比较笼统,具体是做什么
  • 系统访问量有多大
  • 有遇到什么bug吗,怎么解决的

 


 

TP-LINK(Offer Get)

一面

  • 自我介绍一下吧
  • 说说你的实习
  • 实习过程中有遇到什么难点
  • 两台机器为什么ping不通
  • 说说ssm框架
  • Java异常机制是什么
  • 说说wait/notify
  • 排序算法的稳定性是什么,常用排序算法的稳定性
  • 为什么不读研
  • 有没有其他offer
  • 为什么拒vivo,期望薪资多少
  • 觉得自己编码能力怎么样

二面

  • 先来个自我介绍
  • UDP怎么实现可靠传输
  • 赛马问题。有25匹马,每次只能五五一组比赛,且比赛只有排名,需要经过几轮比赛选出前三名
  • 用Java异常判断一个正整数n是不是3的幂
  • 给20个球,一个天平,其中有一个球比其他的球要轻一点,另外的球重量相等,需要称多少次才能找出这个轻球

 

终面

  1. 说说在教研室的项目
    (a:我是本科生
  2. 为什么不读研
  3. 根据面试记录,你拒了vivo offer,说薪资太低了
  4. 父母做什么的
  5. 你拿到了美团的转正offer吗
  6. 问了两个实习做的东西
  7. 之前面试有个题,使用Java异常判断一个数是不是3的幂,回去后有看吗
  8. 给一个字符串,寻找一个最小子字符串,使得子字符串有序后整个字符串就有序了
  9. 成绩单有带吗

 

 

OPPO提前批(二面挂)

一面

  • 自我介绍
  • 为什么不读研
  • Java数据类型有哪些,分别有多少个字节
四类 八种 字节数 数据表示范围
整型 byte 1 -128~127
short 2 -32768~32767
int 4 -2147483648~2147483647
long 8 -2^63^~2^63^-1
浮点型 float 4 -3.403E38~3.403E38
double 8 -1.798E308~1.798E308
字符型 char 2 表示一个字符,如('a','A','0','家')
布尔型 boolean 1 只有两个值true与false
  • Java面向对象特性

封装多态继承

  • 多态是什么

父类引用指向子类对象,调用子类重写方法

  • 重载和重写的区别
  • 线程状态有哪些

面试刷题10-10

  • sleep和wait的区别

sleep 不会释放锁,睡眠一段时间,wait

  • 创建线程的方式

继承Thread类,重写Runable接口,使用线程池

  • 线程池怎么创建
  • 给一个list,怎么排序
  • 说说对jvm的理解
  • hashmap的实现原理
  • 动态代理有哪些实现
  • 使用spring mvc实现一个服务,在浏览器输入这个网址,发生了什么
  • spring mvc的处理流程
  • 用过Redis吗
  • 说说xx(实习的一个小需求)
  • 用了哪些框架
  • 给一个表,找出不同的的数据的量
  • 同样那个表,删除重复数据
  • 有什么想问我的
     

二面

  • 自我介绍
  • 讲一下实习经历
  • xx,HTTP协议里面是怎么表示xx的
  • 在做xx的过程中,需要注意哪些问题
  • 给一个大的数据集,比如千万级,怎么做快速搜索
  • Spring中有什么优化速度的配置
  • MyBatis中有什么可以优化速度的配置
  • 随便用什么使用SQL,怎么提升速度
  • SQL查询慢,怎么优化
  • 索引怎么建
  • 用过什么设计模式
  • 有什么想问的
     

大疆创新(一面挂)

一面

  • 自我介绍
  • 实习的时候最能证明自己的一件事
  • 前后端怎么联调的
  • git fetch和git pull的区别
  • git fetch获取到的数据是放在哪里的
  • Linux中的常用命令有哪些

回答查看硬件性能的比较好

  • top怎么查看CPU中使用率最高的进程
  • MySQL的默认端口

3306

  • MySQL的存储引擎有哪些

InnoDB 和MySIAM

  • 空间利用率MySIAM和InnoDB谁更高
  • MySQL中怎么判断一个浮点数是double和float
  • char和varchar的区别

char的长度是固定的,varchar的长度是

  • Redis的数据结构
  • 为什么要用Spring
  • 看过Spring源码吗
  • 怎么判断对象相等

重写并使用equals方法

  • hashCode()相等,equals()相等吗

不一定相等

  • 面向对象的重载说说看呢
  • sychronized的使用方式
  • JVM的组成
  • OOM会发生在哪些地方
  • NIO知道吗
  • 负载均衡算法
  • HTTP的报文结构

请求和响应

  • Header头里有哪些字段
  • content-type有哪些类型
  • HTTPS的建立连接过程
  • 你有什么问题吗
  • 后面面试官问我能不能接受go语言,有其他offer或者面试在流程中吗,能不能实习,意向工作城市

第四范式(一面挂)

一面

  • Java的内存区域有哪些
  • Java的同步机制有哪些
  • sychronized锁优化
  • 手写一个快排
  • 1亿个数字,找top 100
  • 100层楼,只有两个鸡蛋,找出鸡蛋会在哪一层楼被摔碎

虎牙(一面挂)

一面

  • 一个Java类从编译到执行所经历的过程
  • Java类加载的过程
  • Java的内存区域
  • Java的同步方式
  • MySIAM和InnoDB的区别
  • 事务有哪几种特性

原子性,持久性,一致性,隔离性

  • 隔离性你是怎么理解的
  • MySQL默认的隔离级别

面试官:“讲讲mysql有几个事务隔离级别?”
你:“读未提交,读已提交,可重复读,串行化四个!默认是可重复读”

  • SQL优化知道吗
  • 那分库分表、主从复制呢
  • Redis知道吗
  • 一个TCP上最多允许有多少个HTTP
  • 推送到日志中心是怎么做的
  • 微服务框架知道哪些
  • 怎么设计一个有权重的负载均衡算法
  • 你还有什么问题要问的

蚂蚁金服(一面挂)

一面

  • 自我介绍
  • 实习相关
  • RPC是怎么样提供服务的
  • 序列化方式
  • 说一说Map和Set
  • 说说HashMap
  • Java的内存模型
  • RPC调用在网络中的过程
  • 有什么想问我的

拼多多(一面挂)

一面

  • 什么情况下会GC
  • 说说young gc
  • 循环引用会不会被回收掉
  • 聊之前笔试做过的两个算法题
  • 写一个sql

网易(挂)

一面

  • 自我介绍
  • 说说你的实习
  • Spring AOP的实现原理
  • Redis里面的数据类型有哪些,底层的xxx是怎样实现的
  • Redis Cluster里面的槽有多少个
  • 知道一致性Hash吗
  • 如果节点个数比较少的情况下,怎么优化
  • 平时哪些集合类使用得多,说说HashMap的扩容过程
  • HashMap使用的时候经常CPU使用率很高,知道原因吗
  • 说说MyBatis里面的设计模式
  • 说说你用过的设计模式
  • 单例模式有哪些使用方式
  • 线程池在什么情况下使用
  • 单线程可以使用线程池吗
  • 说说SQL里面的索引
  • 为什么使用B+树而不是B树

B+树数据都在叶子节点,可以放下更多的索引,减少IO次数

  • 建索引需要注意哪些问题
  • 数据库的事务是怎么实现的
  • Spring事务的实现原理
  • 你有什么想问我的

二面

  • 自我介绍
  • 说说你的实习做了什么
  • xx怎么做的
  • 知道xx怎么做的吗
  • 是怎么解决线上问题的
  • 灰度怎么做的
  • 自己实现一个ABtest应该怎么做
  • 实现一个LRU

HR

  • 为什么投网易
  • 说说你印象最深的一件事
  • 说说你最有成就感的一件事
  • 实习过程中遇到的最大的困难是什么
  • 平时学习是怎么学的
  • 网易和美团Offer该怎么选

猿辅导(二面挂)

一面(1h)

  • 先自我介绍一下
  • 说一下你的实习经历
  • xx、xx怎么做的
  • 先说说线程池吧
  • 不同场景下该怎么配置线程池
  • Java中的同步怎么做的
  • 什么情况下用volatile

需要保证内存可见性时使用。

  • 来一个数据库查找操作,搜索出大于100人的年级有哪些
  • 数据库join操作有哪些(回答了inner join、left join、right join,面试官说还有,不知道了。。)
  • MySQL的InnoDB的索引有哪些,怎么实现的
  • 为什么用B+树而不用B树呢
  • 撕两个编程题
    • 二叉查找树寻找第k大的值
    • 某个有规律的(类似于递增规律)二维数组找某个特定值
  • 有啥想问我的

二面

  • 自我介绍
  • 进程有哪些状态
  • 进程和线程的区别
  • 进程调度算法
  • 进程是怎么调度的
  • 撕编程题
    • 反转索引为n-m间的链表

字节跳动(二面挂)

一面

  • HTTPS**交换过程
  • 幂等性是什么

多次操作和一次操作结果相同

  • 进程间通信有哪些
  • 撕算法题
  • 数据库索引用的数据结构
  • B树和B+树的区别

二面

  • 自我介绍
  • 说一个难一点的项目
  • xx是怎么提高效率的
  • xx是的原理
  • 说说你对IoC的理解,有什么好处
  • 抽象工厂和IoC的区别
  • Pigeon和其他RPC序列化方式有什么不同
  • RPC协议更新,该怎么更新服务
  • 什么情况下会发生OOM
  • 怎么判断发生了OOM
  • 发生了OOM该怎么做
  • 撕算法题
  • 大数量的URL,找出出现次数最多的Top 10

 

 

 

 

一面:

三次面试的小哥哥都是挺友好的,这也是我能平静下来的原因(一开始的时候是真的紧张呀)

一上来就自我介绍,然后介绍自己的项目。bulabulabula 我做了XXX系统!!我完成了xxx功能!

介绍完开始问问题:

问:你之前做的安卓,安卓和Java有什么区别或者相同的地方吗?你的SDK多少版本?JDK呢?

答:安卓开发用的是SDK,就像Java的JDK一样,可以自己编写,相互调用实现。

问:JVM内存模型了解过吗?介绍一下?

答:java内存模型分为堆内存和栈内存,栈内存的话保存一些方法传递的参数和一些局部变量。堆内存的话分为新生代和老年代,新生代又分为eden区和两个survivor区 bulabulabula。。

问:新生代和老年代可以转换吗?

答:可以转换,一般来说new一个变量的话都是进入新生代的eden区,但是会有动态对象年龄判定 和长期存活的对象就会进入老年代。继续bulabulabula

问:这些内存里面的垃圾怎么回收?

答:有引用计数和可达性分析法。回收算法的话就有垃圾收集算法:标记-清除、复制、标记-整理、分代收集

问:怎么判断是垃圾?GCroot可以为哪些?

答:a. java虚拟机栈(栈帧中的本地变量表)中的引用的对象。

b.方法区中的类静态属性引用的对象。

c.方法区中的常量引用的对象。

d.本地方法栈中JNI本地方法的引用对象。

问:垃圾回收器了解过吗?介绍一下G1?

答:所有的回收算法都会存在STW问题,G1的话就是对这个问题进行优化,并行回收,用户很难感知。bulabulabula

 

 

数据结构和Java基础知识

问:数据结构了解过吗?hashmap底层是怎么实现的?

答:hashmap的话是数组+链表实现的,通过hash散列化来决定进哪一个数组,如果有的话就“挂”在链表的最后面。bulabulabula

问:hashcode一样怎么办?hashcode和equals的区别?

答:通过equals方法判断真正的内容。 hashcode和equals的关系如下:

1、如果两个对象相等(equals),那么他们一定有相同的哈希值(hash code)。

2、如果两个对象的哈希值相等,那么这两个对象有可能相等也有可能不相等。(需要再通过equals来判断)

问:equals和==的区别?我要比较内容呢?

答:equals:是用来比较两个对象内部的内容是否相等的。

==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。

如果没有重写equals时,是直接用==判断的

如果是基本类型和基本型封装,则仍然为比较内容。

 

 

 

问:下面我们来做几道题目吧?

答:(内心OS 来了来了来了!!!!)好。

题目一:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

当时我真的是很慌张!脑子里想的是我会做我会做!可是却是一片空白。深呼吸一下。用递归做了出来。 又问我除了递归怎么做?“那就遍历,每次都比较就行”

“那为什么不用遍历用递归呢?”“递归写起来简单啊!

题目二

给定一个二叉树,原地将它展开为链表。

leetcode原题。

题目三

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

秒了。

一面结束,说叫我别退,还有一个人。

“好”

====================================================================================

二面:

二面的小哥哥不懂Java 疯狂在问操作系统和底层的实现。。。

问:java导包的过程是怎么样的?

答:import啊(怀疑自己脑残。章口就莱??)

问:java的jar包是源代码吗?

答:jar包就是一堆.class文件

问:那别人的包你导入,你们的字节码会怎么样?互相影响吗?

答:不!知!道!(哭了,饶了我这个小菜鸡吧)

问:java的编译是怎么一个过程呢?

答:java编译器的话经过四个步骤,词义分析,语义分析,语法分析和代码生成。

问:java 的虚函数是怎么样的?

答:java里面是抽象函数和接口,然后bulabulabula介绍异同;

问:java内存模型是怎么样的?

答:上同。

问:java内存空间是怎么分配的?

答:

一, 对象优先在新生代Eden区分配

二, 大对象直接进入老年代

三, 长期存活对象将进入老年代(虚拟机设计了一个对象年龄计数器,该阀值默认为15)

四, 动态对象年龄判定 如果Survivor区中相同年龄所有对象大小的总和大于Survivor区空间的一半,年龄大于或等于该年龄的对象在Minor GC时将复制至老年代

五, 空间分配担保 当Minor GC时如果存活对象过多,无法完全放入Survivor区,就会向老年代借用内存存放对象,以完成Minor GC

 

问:我看你数据库用的比较多,介绍一下mysql的底层实现?

答:底层的话是用b+树实现的,它的优点是能够定位到数据点和范围查询。修改key与子树的组织逻辑,将索引访问都落到叶子节点并 按顺序将叶子节点串起来(方便范围查询) 等等。。。

问:TCP和UDP有什么区别?

答:

 TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的

 TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。

 TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。

 TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率

 TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。

 TCP面向的是字节流的服务,UDP面向的是报文的服务。

 

问:我们做题吧?

答:(内心OS 来了来了来了!!!!)好。

二面的话就做了一道题目,可能是小哥哥比较急着吃饭吧。QAQ

问:合并两个有序链表。递归和非递归的实现。

答:(还好还好)秒了。

 

然后问了我一些基本情况,江苏的吧?问我有没有什么问他的?我:“emmmm 我都忘了我问的啥了”

老哥听完来了句“那就来吧”

内心温暖度maxXXXXXXXXX

问了下上司,要不要三面,上司在吃晚饭,决定晚上八点继续

=======================================================

三面的话就聊人生、聊项目

让我写了一下之前做的socket传输功能服务器端和客户端大概的方法、代码。

然后问了一个架构题目,好像是微博热门怎么查之类的。

没怎么听懂他的意思,Q_Q

应该就是一个TopK问题吧。

============================================

然后就让我等HR通知了。

5555

总体感觉的话还是要学的东西还挺多的,要不然以后心态还是会崩,会做的题差点因为紧张而得不到正常发挥。

 

 

 

相关文章:

  • 2021-12-09
  • 2021-07-27
  • 2022-01-04
  • 2021-05-27
  • 2021-11-26
  • 2021-12-13
  • 2021-08-18
  • 2021-10-17
猜你喜欢
  • 2022-01-03
  • 2021-05-03
  • 2021-12-06
  • 2021-06-22
  • 2021-12-16
  • 2021-12-28
  • 2021-06-01
相关资源
相似解决方案