8月25号 一面(1h10min)
1.自我介绍
2. 项目简介
因为我的项目都是离线计算的,主要用的是hive和spark。讲完第二个项目,面试官问了我开发中有没有遇到过性能问题,做过调优么?我回答的是spark的资源参数调优,然后他问我为什么会想到这几个调优参数,依据是什么?
3. 问答环节
Spark的执行流程了解么?说一下
Java的垃圾回收的算法有了解么?(4种)
说一下你对HashMap的理解吧?(我是基于jdk1.8讲的,没说1.7)
讲一下LinkedList和ArrayList,区别是什么?
MySQL索引了解么?说一下?
继续问:回答过程中我说了B+Tree,然后面试官问为什么MySQL用B+Tree,它比起B-Tree的优点在哪?
MySQL索引的问题会有哪些?
Linux用过么?Linux查找文件的命令是什么?
我回答说不知道,然后面试官问我你都用过哪些命令。然后我巴拉巴拉说了一些很简单的,然后他说了解了。
4. coding环节
1. 数组最小和问题
定义:一个数组从0~N-1,每个元素的左侧小于或等于该元素的所有元素之和称之为该元素的最小和。数组中所有元素的最小和称之为数组的最小和。求给定数组的最小和。
我想了5分多钟,然后想不出来解决办法。然后用暴力法,面试官看到之后给你个提示归并排序。然后问我归并排序的思路知道么?我简单解释了一下,然后我又想了两分钟跟他将归并我理解的不好,然后他就说那咱们下一题吧。
2. 单链表反转
我写出来之后提交通过率只有百分之80,然后面试官问我写完了么?我说写完了,然后他就说好,先这样。(内心PS:我好慌,我明明写的思路对的,为什么每AC)
5. 反问环节
有什么想问的么?
9月4号 二面(1h40min)
面试官那边网络信号不好,说话也听不清楚,面试体验不是很好。我和面试官聊了一个多小时,中间因为网络从视频面试变为了电话面。
问答环节:
1. 操作系统
死锁的概念?死锁的四个必要条件?(上来蒙了,就记得两个其他两个面试官提示的)
如何解决死锁?(我当时想从四个条件入手说,然后刚说面试官打断我,说那你讲一下银行家算法)?
讲一下进程、线程和协程的联系和区别?(只回答上来了进程和线程,协程我说我不知道了)
2. 计算机网络
HTTP的状态码有哪些?分别代表什么意思?(我没记全,只记得505、502、404)这种)
面试官见我答得不好,就说那你讲一下每个分区状态码都代表的含义吧(比如500 – 599是反应什么的问题?)
TCP三次握手,为什么要3次?两次可以么?
3. Java
红黑树了解么,讲一下?Java中在什么地方都用到了红黑树?
Sleep和wait的区别(由于网络问题,我确认了三遍才听清面试官说的什么)?
Volatile关键字如何保证线程安全的?从Java内存模型的角度谈一谈?与synchronized的区别?
讲一下JVM对于synchronized的优化?(锁升级)
讲一下锁粗化?(这个我一时没想起来)
JVM的内存区域都有哪些?然后当讲到直接内存的时候,问我你讲的是1.8还是1.7。然后我讲的1.8,1.8里面成为元空间。
什么情况下会导致元空间发生OOM?它和堆里的OOM有什么区别么?哪个区域不会发生OOM?
讲一下反射?开发过程中用过反射么?我讲没有,那什么场景下会用到反射知道么?
如果我发现当前系统的CPU利用率一直是100%,可以讲一下造成这个现象的原因么?
如何使用Java的命令结合Linux命令找出问题所在?(我回答的是当前系统有死锁了,面试官问我怎么定位发生死锁的代码呢?这个我不知道了)
知道使用什么指标可以衡量你写的Java代码的运行效率么?(我回答的是时间复杂度和空间复杂度,这个我真的不知道,有点傻)
PS: 中间网络炸了,然后我俩互相听不清说话,然后面试官让我写道题目:
原地删除有序数组中重复的元素,然后返回删除后的长度。Leetcode原题,我写完面试官说我代码太冗余了。
4. 分布式
讲一下CAP?(我当时一听就懵了,然后面试官就没再问了)?
5. MySQL
事务的特性(ACID)?
事务的隔离级别?什么是幻读?
MySQL默认的执行引擎是什么?它的默认隔离级别是什么?那可以避免幻读么?(我说不可以,面试官说那我就没法往下问了。我估计他是想问我MySQL 的MVCC和日志实现事务的隔离级别)
6. 大数据框架
Spark的rdd讲一下。
MR的shuffle过程讲一下。
Spark SQL调优。
7. 项目。
聊了会我的项目,面试官说我的项目较简单。
总结:
面试过程因为网络问题,导致了中间出了点小插曲,整体来说面试问题难度中等偏上。二面的面试官比较严肃,我答的也不够好。许愿三面!!!
全部评论
(7) 回帖