只有经历过才会有感受,人想要真正成长,必须自己独立的去做一切之前没有做过的事。
零、面试准备(关于Java和大数据方向)
1、大学专业课程的准备(有面试官会问你大学课程什么掌握的最好,来,咱们细聊)
2、算法方面的练习(这个本人感觉一时半会是提升不了的,得经常练习)
3、项目的介绍
4、针对自己的简历复习,针对公司外放的招聘要求复习
Java开发方向:重点是Spring的,关于SpringMVC、MyBatis等框架还没遇到(不过本人面试的少)
大数据方向:关于大数据的,例如HDFS、MapReduce、Hive、HBase等要有自己的强项,重点复习,因为可能面试官因为你某个学的好,就要你了
若有余力,建议掌握Redis,这个感觉问的多
最好学学ElasticSearch,因为刚看了一篇文章,感觉这个应该有用(个人猜想)
一、面试的路上(可以跳过,直接看 二、面试遇到的问题 )
经过了大约两周的面试,加上就业的“寒冬”,过程不管如何,总算找到了很满意的实习工作。记得是在三周前,我大学专业的领路人兼我的大学舍友,突如其来的有个面试的机会,刚听到这个消息时,还算镇定,虽然知道他是那么的优秀,但毕竟是人生中第一次面试。
中午临午睡前,看见群里他发的消息,通过技术面,就差HR面,关键的是技术面的面试官请他吃了中午饭,我就一下子慌了,毕竟是大学几年跟随他的脚步过来的,他这很突然的找下了工作,我整个人都懵了。
恍恍惚惚的过了两天,才意识到自己在不抓紧时间的话,今年就真的找不下自己满意的工作了,于是就问舍友将其之前准备的复习计划要了过来,开始面试的准备。
在第一周的时候,是一边复习,一边在网上投递着简历,刚开始几天没感觉到什么,毕竟初次接触,但周围同学陆陆续续的出去面试,以及回来的之后的聊天,使得我对自己产生了怀疑,认为自己大学几年加之最近的学习是不是白付出,因为感觉平常不是很用功的同学找下了工作。在第一周是真的难受,但还好,难受归难受,该去教室学习、复习的时间还是去了教室学习、复习,即使效率不是很高。
在那一周时间,最多的还是想到:
自己复习哪里的知识呢?
复习的知识出去面试会被问到吗?
之前没有自己仔细研究过的,但感觉出去被问的知识用不用仔细研究呢?
自己每天坐在教室学习、复习有用吗?都没有面试的机会
还好,第二周开始时,询问了一位经常出去面试的同学,看了看他的简历,根据他的简历作了修改,陆陆续续的收到了预约面试的电话,过程就不细写了,总之想说的是:
1、要好好准备,不要等到机会来临时,因为自己的准备不足而导致机会的丢失;
2、最为重要的(自我感觉最重要),不管自己知识掌握了多少,最起码要把自己知道的全部正确的表达出来,尤其是在面试的过程中,毕竟面试与平常不一样。
还有就是面试过程中遇到不知道的,能说出类似的解决,也是不错的,但不会就是不会,别跟面试官拖时间,这个不会、不知道,最好是由自己说出,跟面试官说声对不起,这个问题现在的自己暂时回答不了;
3、知识的积累也不要落下,毕竟没有知识的储备,即使过了面试,也只是空中阁楼。
二、面试遇到的问题(以下具体公司就不写了,怕麻烦)
以上呢是个人感受,下面是我面试过程中遇到的问题(提醒:别人的面试问题只是别人的,你看自己的面试问题,和看别人的面试问题,感觉是不一样的)
顺序都是乱的,只是想到那个就写的那个,但大体上根据Java基础、框架方面、数据库、大数据、项目的顺序写的。
A公司——BI工程师实习(印象最深的,毕竟是第一次面试,不过重要的是面试官给了自己很大帮助,将我自身以及简历上的毛病挑出了不少)
1、多线程的实现方式
2、数据库中ACID是指什么?
3、SQL的书写(当场给的案例,当场手写),两张表,关联查询
4、聚合函数与group by
5、ZooKeeper的节点操作
6、你是如何使用ZooKeeper的?
7、MapReduce中什么时候使用Combiner?
8、MR的执行流程(此处问的是程序中mapper与reducer),例如在统计单词的时候
9、Shuffle中的sort在哪发生?什么时候不发生?
10、Hive的元数据库在哪里存放?
11、Hive分桶表的作用
12、Scala与Java的区别
13、Scala中的Map与Java中的Map添加元素的实现(此处是坑)
14、关于Spark没有问,只是点出那里面能问的东西很多,掌握不了,最好别往简历上写
15、针对简历上,项目方面的问题(仅供参考)-- 网站流量分析
1)如何将用户的消息存储到Flume?
2)数据的清洗是如何完成的?
3)Hive是如何将数据进行存储的?
B公司——Java开发实习(群面-一个面试官三个面试者)(这家公司面试官问的问题还不错,唯一不好的就是最后让走实施)
1、讲讲多线程(本人感觉回答这个问题,先回答多线程的实现方式)
2、介绍你了解的设计模式(回答了单例模式,但又追问工厂模式)
3、你在什么地方使用过什么设计模式?
4、关于网络通信,在哪里使用过,具体过程
5、讲讲对Spring的认识,AOP如何实现事务控制?
6、你在平时项目中经常使用的注解,Controller层中使用过的注解
7、讲讲对SpringBoot的认识
8、redis的问题以及redis如何实现缓存这一功能的(由于是群面,虽然我简历上没写,但还是被问到了)
9、对Hadoop的认识,HDFS是如何实现的?(这个是我的简历上写了)
10、关于简历上项目的提问,问的很深(自我感觉:若是你的项目简历刚好是面试官最近经常接触的,答的好是加分项,打不好就惨了;若是面试官了解的不多,不会细问,只要他问清楚就OK了)
之后的问题现在就感觉是在往实施那个方向转的问题
11、使用Linux做过什么?
12、知道SpringCloud吗?知道Docker吗?什么是微服务?
之后就是面试官对他们现在做的项目的各种介绍,然后就是他们缺实施.....
C公司——Java开发实习
一面(记不清了,只把记得写下):
1、HashMap取元素的过程
2、数组取元素时为什么可以直接得到元素?
3、ThreadLocal的介绍,在哪使用?
4、数据库的隔离级别,但没有直接问,而是给了两个事务,让说在四个隔离级别下的各自情况
5、在隔离级别下数据库读写哪个加锁
6、网络相关,例如HTTPS是如何实现安全的?
7、Java代码实现开根号的思路,思路说完手写代码
8、项目相关的细节
二面:
一面结束后,让我等了将近半个小时后,出来另一个面试官,重点是关于算法的,因为掌握的不好,所以关于问题只写下我记得的几个(不是全部),因为每个面试官问的算法题肯定不一样。
1、大学课程哪门课学的最好(这应该是根据你回答的深问)
2、单链表的反转,空间复杂度O(1)
3、堆排序中堆的实现
4、快速排序,手写
5、如何判断单链表有环?
6、在两个数组中判断重复元素,空间复杂度O(1)
7、使用堆实现队列
8、动态规划
D公司——大数据开发实习
先做的笔试,很简单,唯一个难的就是输出和为n的正整数的数组(数组中的元素可以是1~n个),关于笔试题有一个需要写一个你能想到的最复杂的sql语句(尽自己所能,但是必须写出来)
1、ArrayList和LinkedList的比较,谁的效率快(每个方面,插入、删除等)
2、讲讲ConcurrentHashMap,其存元素是如何实现的/
3、谈谈对高并发的了解
1)volatile,关于原理、可见性、原子性、指令重排
2)ThreadLocal,原理、实现
3)线程池,参数的介绍、种类(当说了fork-join时,面试官说还知道fork-join,不错)
4、在单例中使用volatile,目的是什么?
5、动态规划的基本思路
6、除了JDK中的jar包外,还使用哪些jar包?
7、SQL中inner join的作用
8、对于大数据,你对哪块最熟悉?
9、HDFS的写文件过程,是一个DataNode写完就通知Client结束,还是等待所有DataNode写完通知?
10、MapReduce中的Shuffle过程
11、项目的讲解
E公司——大数据开发实习
1、String、StringBuffer、StringBuilder的区别,性能比较
2、单链表与双链表之间性能的比较
3、写一条sql语句
name |
score |
A |
90 |
B |
30 |
C |
70 |
根据上表的数据,通过score列,将name分为低、中、高三个等级
实现:
name |
等级 |
A |
低 |
B |
中 |
C |
高 |
4、Maven的构建过程
5、pom.xml中的标签,是关于依赖的jar包的使用范围,以及该jar包如何确定其可以在编译时被编译进去
6、MapReduce的开发过程(主要是mapper与reducer)
7、Shuffle发生在哪里,具体过程
8、Hive的分桶表,为什么不使用分区而使用分桶?
9、针对简历上的校园经历进行深问
10、项目的介绍
三、面试感受(仅供参考)
面试的时候面试官的提问应该是有两个针对点:
一是你的简历
二是他正在使用的,或者他公司关注的技能
简历方面:
个人技能一定要考虑清楚才写上去,甚至简历上的所有写上去的,都必须不怕面试官提问,要不你会很尴尬;
对于个人技能方面的把握,不要写太多(除非你真的熟悉很多),尽量将自己最为熟悉的写上,可以写一到两个自己了解的(不要太多)
这个因人而异吧,提前考虑一下不至于被问到时太懵,有的公司可能是外放的Java岗,但最后面试结束会问你转不转其它方向
把每一次面试当做自己查缺补漏的过程,通过面试,更好地认识到自己。之后一定要针对自己所感兴趣的方向完善自己,另外最好可以有个交流的挚友,人生路途遥远,有几个挚友可以帮助自己走得更好!
最后提示,有的公司hr虽然通知你面试通过,让你安心等待offer,但不要停止找工作,因为一是你可能得到多个offer可以选择最好的,二是可能在审批offer的时候,批不下来就把你刷了。
摘录自《原则》:
...你最好弄明白其他时间、其他地点、其他人身上发生的事,因为如果你不这么做,你就不知道这些事情会不会发生在你身上,而且一旦发生在你身上,你将不知道如何应对...