位置 帝国网站管理系统>职场>笔试面试>面经

去哪儿一二三面(已完结)

去哪儿一二三面(已完结)
去哪儿一二三面(已完结)
去哪儿一二三面(已完结)
去哪儿一二三面(已完结)
去哪儿一二三面(已完结)

去哪儿一二三面(已完结)

一面

同学一:

自我介绍

手撕:懒汉式单例模式——限时,然后会根据你写的代码问是不是有什么问题,能不能继

续优化

手撕:在之前的基础上引出并发编程安全性问题,问代码改造成对象池(和线程池类

似),只能存放五个对象

springboot 的优势

springboot 开发项目打包成的 jar 包和 war 包的区别,以及入口(程序执行的开始,war

包没用过,不会)

整体重点是多线程和 springboot,学到很多

同学二:

redis 底层数据结构,为什么用跳表不用红黑树

500 万行的点赞数据应该用 redis 什么数据结构

springboot 与 spring mvc 区别

spring 注解

spring bean 作用域等

同学三:

• ArrayList、LinkedList 的区别、使用场景

• 讲一下 hashmap 的实现

• 哈希冲突的解决方法还有哪些

• 开放地址寻址法

• List、Map 有哪些线程安全的实现

• Vector、CopyOnWriteArrayList 平时使用哪个

• volatile 有了解吗(简单讲一下可见性、指令重排序,简单说了一下 JMM)

• 安全点与安全区域有了解吗

• 栈帧了解吗

• Java 内存的结构

• 为什么要分代管理对象

• 中断了解吗(说了缺页中断)

• 虚拟地址有什么用

• 虚拟地址怎么去实现的,页表存的是什么,多级页表

• TCP 建立连接后发送信息,会触发哪些机制(答滑动窗口、流量控制、拥塞控制)

• 拥塞控制具体算法有哪些

同学四:

1. 项目介绍,项目中遇到的难题怎么解决的?

2. LRU 算法用什么数据结构实现

3. hashmap 的原理,conncurrenthashmap 实现原理

4. 设计一个秒杀系统

5. 怎么记录网站访问者的 ip 和对应的操作以及操作计数,这些数据怎么存储

6.数据库悲观锁怎么实现的

7. 分布式架构中,怎么保证数据的一致性

8. mysql 数据库的事务隔离级别有哪些?默认使用哪个?回答默认级别是可重复读,问

可重复读是什么意思

同学五(测开):

1. 自我介绍

2. 说的比较熟悉 java 语言,然后就开始问 Java 相关的问题

3. 多线程?进程和线程之间的关系?

4. int 和 Integer 之间的关系?占用内存情况?哪个占用内存比较大?为什么?

5. 知道哪些设计模式?什么是单例模式?单例模式有哪几种?

6. java 中 GC 原理?GC 过程?

7. 在浏览器中输入一个网址的过程?DNS 的域名解析过程?

8. 知道 Hosts 吗?(不知道没回答)

9. 测试一个自动贩卖机?

10. fiddler 的工作原理?

11. 软件测试的流程?

12. 接口测试?

13. tcp 和 udp 之间有什么区别?

14. http 和 https 的区别?

15. 使用 fiddler 能不能抓到 https 协议的内容?

16. ArrayList 和 LinkedList 的区别?

同学六(测开):

1. 自我介绍

2. 介绍研究生项目,用时较久

3. 写代码,数组反转,不允许开辟新空间

4. 对写的代码测试的方法

5. 再次说笔试测试用例题进行测试的方法

6. 说一下死锁

7. 智力题,甲乙丙帽子,自主答了一半,面试官很好,最后引导的答出来了

8. 写 sql 语句

9. Alter 和 update 区别

同学七:

• 自我介绍一下

• 你 Java 是怎么学的?学校有讲吗?

• 进程的通信方式有哪些?

• 给你几个看看进程通信方式和几种场景,你看看它们是不是对应?

1. 消息队列:redis 的 pub 和 sub

2. 信号:linux 的 kill 命令

3. 管道:ps xx | grep xx

4. 共享内存:MySQL 的 buffer pool

(这几个都是一一对应的,面试官跟我解释说这是一种抽象,不是具体编码实现,是那个

思想)

• 网络五层协议是哪五层?上面三层常见的协议可以说一下吗?

• 网络层除了 IP,还有哪些协议?

• linux 中,哪些命令与应用层的协议相关?哪些命令与传输层的协议相关?哪些命令

与网络层的协议相关?你可以举几个例子吗?(面试官在聊天框又写了 netstat,

ss,lsof 这些命令,然后跟我讲解这些命令,包括还提到了 ip 等命令)

• Map map=new HashMap(100),往里面 put 多少个元素会扩容?(这里跟他说这不好

说,因为 hash 冲突也会引起扩容,他跟我说不考虑冲突;后来面完想了想,因为容

量已经大于 64 了,hash 冲突就不会引起扩容了)

• 为什么是 128*0.75?

• 为什么它要把长度调整到 2 的 n 次幂?

• ReentrantLock 的 lock 做了什么事情?概括一下?先考虑只有一个线程的情况

• 只做了 cas 吗?

• 你可能漏了些什么;那我这个线程再次执行这个 lock 方法会怎么样?

• 那如果换一个线程过来执行这个 lock 呢?

• 那为啥原来的那个线程可以重入,新线程不能重入?

• aqs 有个当前线程的变量吗?怎么标记当前线程是否自己呀?

• 你说得没毛病,所以你刚才 lock 的时候是不是漏了什么事情?(引导我很久,就是

想提示我漏了说把当前线程设置到 aqs 的 exclusiveOwnerThread,因为一直有点想当

然了,就一直忘记说了;提醒我要要理解 aqs 的本质,说我已经把 aqs 这些东西都说

出来了,怎么忘了这一步)

• 那你有没有想过 aqs 为啥要设计成抽象类?

• aqs 的核心三个组件是 state、exclusiveOwnerThread 和队列,你知道有哪些并发工

具是只用第 1 个和第 3 个就可以实现的吗?(然后他借这题跟我解释了为啥要设计成

抽象类的原因)

• Java 里面把线程挂起的方式有哪些?

• sleep 和 join 不算吗?(名牌提示)

• 这里面有个 wait 方法比较特殊,你知道 wait 方法是要在什么条件下才能用吗?

• 为什么要在同步代码块里面才能用呢?有思考过什么原因吗?(他说我说的没毛病,

但是有点不完整,稍微完善一点的是这个意思,sync 是个关键字,在编译的时候会

编译成 monitorenter 和 moniterexit 指令,会生成一个辅助对象,也就是

ObjectMonitor,来辅助 sync 的执行,这个对象里面有个核心的类似 aqs 的结构体,

也就是我说的 waiter 队列和 state 和 owner,wait 必须依靠这个 waiter 队列进行挂

起,所以说它必须依赖 ObjectMonitor 这个对象,如果没有这个对象,那就会报错)

(无敌 )

• NIO 核心的三大组件是什么?(我在说 selector 的时候说了个 epoll,他跟我说不一定

是 epoll,还可能是 kqueue,甚至是 select 和 poll,要看具体的操作系统以及操作系

统的版本)

• 你在网络传输的时候,传输的字节,会出现黏包半包问题,你知道黏包半包问题有什

么解决思路吗?

• 你在哪些中间件或者哪些地方见过黏包半包的这些解决思路吗?

• 除了 netty 还有吗?(然后他说我刚才说的基于长度字段方式,让他想起了 kafka 的

协议,然后讲了 kafka 里面的黏包半包问题)

• 问下实习吧,你在实习的公司做过什么项目?

• 你觉得你的系统的用户量是百级千级还是万级呢?

• 你们项目部署的话,是部署多少台机器呢?

• 你可以说一下你做的一些的核心功能吗?

• 你觉得你这个预约系统的接口里面,最核心的接口是哪个接口?

• 那你就说一下吧,你这个接口从前端发起请求,直到返回给前端,一共经过了哪些组

件、中间件和系统?分别做了什么事?

• 你说你还有下游,你说说你跟下游通信的方式?Feign 还是 HttpClient?

• 我看你之前做过 rpc,你应该很清楚模块与模块之间调用的方式吧?我给你举个场

景,我本地服务 A,有个 C 接口,要调用 M 方法,这个 M 方法是在服务 B 上的,但

是我现在服务 A 上面只有 C 这个接口,而且是没有任何实现类的,那它是怎么实现调

用服务 B 的呢?

• 你是不是还漏了什么?服务 A 是直接跟服务 B 发起请求的吗?前面没有其他步骤了

吗?(然后他开始讲起来他对 rpc 实现的思路,从注册中心,协议,序列化,连接方

式,代理模式等等;跟我说这个框架不难写,但如果要实现的像 dubbo 和 grpc 那

样,还是要有点水平)

然后就结束了,他说我是本科,看得出来我很热爱技术,对技术有自己的理解,在本科很

少见,但是技术涉及的不是很多,也比较简单和基本;最后说要给我个建议,讲了十分

钟。最后没有反问

可以看出来面试官是个真大佬,对很多东西都很熟悉,面试的时候边打哈欠边面,一边吃

面包一边喝水,很自然但是很凌厉,一点不拘谨,随手在留言板上面写两句代码都能问很

多东西,能从一个问题扩展到其他问题,也给了很多提示,补齐我说漏的东西;特别是最

后赶时间还是跟我讲了好久的建议,是真的很感谢

二面

同学一:

详细答案:https://mp.weixin.qq.com/s/CX62JSYteIgcVjN6Adsibw

自我介绍

项目的难点,为什么做这个项目

答案

我在做 PmHub 这个项目时,印象最深刻的三个点分别是:

1、将流程引擎丝滑地结合到项目管理业务中,需要系统的设计,我用到了 DDD 抽象模

型,抽象工厂模式设计监听器等。

2、当海量请求触发流程流转时,如何解决缓存穿透、缓存和数据库一致性问题?

3、以及如何利用分布式事务保证任务审批状态一致性等。

从个人角度来说,我觉得现有的项目管理系统无论是禅道还是 TAPD,更多关注的是需求

迭代和缺陷本身,对项目的资源管控以及流程引擎关注度不够,PmHub 的诞生就是希望

打造一套智能的项目管理系统,核心是可以对项目资源录入、任务智能流转分配,未来还

打算增加企业物料管理、供应商管理、采购管理、仓库管理等,我们的目标是开源一套完

整的 CRM 系统,结合现在的 LLM,实现智能化的项目管理。

java 集合用过哪些——collection 继承哪些接口

接口可以多继承吗

异常和错误的区别

受检异常和非受检异常,常用的有哪些,公共的父类是哪个

Object 底层的数据结构(蒙了)

用过哪些设计模式,设计模式有哪些好处

锁升级,synchronized 底层,会不会牵扯到 os 层面

spring 的容器、web 容器、springmvc 的容器之间的区别

springboot 的好处(一面的问题又问了一遍)

mysql 为什么用索引

事务的理解

事务的隔离属性

redis 内存淘汰和过期策略

redis 和本地缓存的区别,哪个效率高

redis 缓存击穿、穿透、雪崩

JMM 模型

场景题:秒杀

面试官刚开始就说不要紧张,技术上交流交流,想到啥说啥。面试过程也会引导,体验很

好。常规的八股交流,hhh

同学二:

自我介绍+项目

复盘了机试代码

01 背包 和 完全背包 代码该如何写

同学三:

1. 写一道算法题,比较两个数组是否相等(2 个数组元素乱序也相等) 口述算法

2. 写出来

3. HashMap put 一个对象需要注意什么(重写 hashCode、equals 方法)

4. 项目

5. 你觉得你的性格特点对于工作上的优势

6. 反问

同学四:

1. 项目介绍,项目中遇到的难题怎么解决的?这个问题和一面一样,我重新回答了一

遍,面试官说我的解决办法不是最优,问我怎么进一步优化。

2. java 反射机制,项目中有没有用,用在什么地方

3. 找出链表的中间节点,找出链表的三分之一节点,五分之一节点…

4. git 是怎么管理代码的,提交错误的话,怎么撤销

5. 有没有写过博客。我说写过 CSDN 算不算。又问我为什么不在 git 上写博客。

6.Java 怎么减少 GC 次数,怎么减少每次 GC 时间

7.计算机网络熟悉吗?我说不是太熟,只了解一些常见的协议,http,tcp 和 udp 之类的。

然后面试官说,昨天面了一个你们学校的本科生,他做了一个平台,可以把你们的校园网

宽带提升十倍,你知道吗?我说不知道。他现在在你们学校都有 2000 多用户了,这个你

都不知道?还是你的学弟呢!(最怕空气突然安静~)

8.这两轮面试下来,你觉得自己那些方面需要提升

9.你有没有什么问题问我的

同学五(测开):

1. 面试官特别和蔼,没让自我介绍

2. 直接问有没有自己动手做过项目,因为没咋做过实际应用项目,汗~

3. 问项目中 redis 的作用,加入 redis 有什么优点和缺点(答得很不好)

4. 上过计算机网络的课吗,学到的什么知识?(回答协议,面试官很注重理论和实际的

结合)

5. 路由器和交换器的作用,没有路由器两台计算机可以通信吗,怎样通信?

6. 有没有思考过为什么要设计这些协议,这些协议的实际应用?

7. 上一问中提到过 mac 地址,问 mac 地址是什么?为什么是独一无二的,显卡是什

么?显卡为什么能加速?(不懂这块)

8. 主机里面有什么?cpu 是什么,有什么作用?单核多核的区别?(面试官思路特别活

跃)

9. 提到并行和并发,解释?在多核 cpu 中,怎么完成任务?

10. 提到 cpu 的调度方式?java 里面的线程调度方法?程序的最小执行单位?

11. 时间片轮转算法的过程?会造成什么问题?在面试官的引导下回答出死锁

12. 什么是死锁?死锁怎样解决?

13. 在以上条件下怎样解决死锁?

14. java 中怎样加锁,有哪些锁,有什么区别?讲到了 syn 的底层

15. 开始问数据结构,在项目中用到了哪些?有哪些实际应用,提到了 b+树,让讲一

下,还有红黑树?

16. 职业规划,为什么做测试?

同学 6(测开)

1. 自我介绍

2. 介绍研究生项目

3. 根据项目问了各类异常情况和接口测试

(1) 对异常的查看

(2) 对接口的测试

4. 项目使用语言是什么?我研究生项目用的 python

5. Python 中有哪些异常

6. Java 中有哪些异常

7. 服务器端命令:对权限的修改

8. SpringMVC 使用什么容器实现

9. 使用过 Filter 吗?其内部原理

10. Sql 语句:查找学生表中考了三科及以上且有三科成绩大于 75 的学生数据

11. 怎么查看是否使用了索引,索引失效的情况

12. 说一下对 Spring 的了解

13. 反问

同学七

• 自我介绍一下

• 没有考虑过考研吗?考研和工作两方面是怎么考虑的?你的专业课有哪些?(作为双

非本被问这些已经不惊讶了)

• 操作系统的进程和线程有什么样的联系和区别?

• Java 里面也有进程和线程,Java 里面的进程和线程跟操作系统的进程和线程有什么区

别?

• 我在一个 jvm 进程里面,最多能开多少个线程,原因是什么?

• 一个线程的创建需要消耗哪些资源呢?

• http 熟悉吗?1.0,1.1,2.0 有什么区别?

• 3.0 也出来啦,3.0 解决了什么问题呢?

• 一个表有学生号,学生名,学科,学期,成绩;查出每个学期的每个学科的最高分学

生名(没写出来。。。)

• 没关系,那我们再写道别的题吧;有重复元素的有序数组中找出大于等于目标值的第

一个元素的下标

• 聊聊你毕业后的计划吧

二面也是没有反问

二面面试官非常和蔼可亲,很温柔,讲话也有点俏皮,sql 写不出来都给我过了

但是也狠狠地批评我,说我有个问题至少犯了四次,还没看清题目,没听完要求就开始写

了,他要我直接在代码里面初始化数组就好了,我还用了 scanner,甚至那个算法题的题

目都是有二义性的,我也没发现,也没问清楚,关键还是在于审题,而不是二分法;听得

我很慌,以为要挂了

然后告诉我以后工作也是,写代码也是,都要先听需求,先思考,写代码的时候永远是最

短的

最后说没关系,说我面试能学到东西就好,其他的问题跟 hr 聊吧

三面(HR)

同学一:

实不相瞒,秋招面过这么多企业,唯一一家 HR 面是女的 ???

试? ? ? 面

常规的问题,什么职业规划、项目经验、自身优缺点啥的

同学二:

自我介绍+项目

家庭构成

优缺点

担任职务的工作等

同学七:

常规 HR 面,介绍实习,实习收获,为什么不转正,毕业志向,个人优缺点

反问

11 月左右反馈面试结果

没有提前实习的要求

开泡