看着标题有点吓人,实力未必有那么强,但是确实是自己第一次走出校园的一段经历。如果对找工作也还很迷茫的话,那么这篇文章确实值得一看。码字不易,还请点个关注/赞;坚持到最后会有一点小福利哦
从此处看页面更加简洁美观个人博客文章地址
www.zykop.cn
二话不说先上图:
经过半个多月的面试,拿到了滴滴和蘑菇街的offer,虽然没有拿到bat的offer但是对于我来说这个结果还是可以的。面过啊里和腾讯最后还是失败了,确实能感觉到其中存在的差距,毕竟全国大学生、研究生都想进bat,如果没有突出的表现的话,难度还是挺大的。
啊里面试官建议:在大学学的东西太多太杂了,搞java又学python、机器学习等,其实能专攻一个方向就够了,毕竟想什么都学通的话很难。
腾讯面试官建议:来面试的人很多,我们更希望的是听到一些大家都不知道的,而你知道,比如说你能讲一些NameNode的源码…
看到这两条,应该都有点感觉把,大厂要找招的是学得精而不是学的多。也就告诉我们在写简历的时候,尽量写我们最擅长的,岗位最需要的,而不要凡自己学过的都写上去,切记!,还有就是源码搞起来。
每个人都有大厂梦,尤其是普通学校,能进大厂是多么值得高兴的事情,以至于我们需要更加倍努力,冲啊!
接下来讲一下我们该准备什么,我主要投的是java后端开发和大数据开发。面试就是一场和面试官的战斗,想要赢就不能没有准备。先看一下面试都干了啥。
上来先自我介绍
ArrayList和LinkedList的区别。 多线程环境下怎么使用集合。 紧接着问我CopyOnWriteArrayList的底层实现。 Vector的怎么实现线程安全的。 synchronized和ReentrantLock的区别。 volatile关键字干嘛的。 什么时候用synchronized,什么时候用volatile,说个场景。 HashMap和ConcurrentHashMap的区别。 线程池什么原理。 在java中线程有哪些状态。java基础轰炸完之后来到了jvm
叫我谈一下GC。 刚问讲理论,接着就问你做过什么GC优化。 干完垃圾回收那一块,开始问类加载机制。 接着就来了个场景题,你说有双亲委派模型有优点那它有什么缺点呢。什么场景需要破坏双亲委派模型。经过了jvm的激战,来到了数据库篇
问我使用什么数据库,mysql,接着叫我谈索引。 什么是聚簇索引什么是非聚簇索引。 最后来了个场景题,一张表有A、B、C、D、E五个字段,对A、B、C、D建立了复合索引,现在要查A=1 and B=2 and C>3 and D=4,用到了那些索引? 为什么D没用上;最后来到了项目篇
三分钟描述你的项目。 项目的数据量是多少。 项目哪些地方用的是分布式。 kafka如何保证幂等性,即怎么做到数据不重复消费。 TF-IDF是什么。不过还没完,说要来个线上小测试,发了个阿里在线评测系统,直接手撕。
实现一个阻塞队列。总用面了一个半小时。
这次面试我面的是java后端开发(申明一下由于我主要学的还是大数据,ssm等只是会用,所以没怎么问),所以没有涉及到大数据方面的东西,考查的更多的是基础,不管面大数据开发还是后端开发这些都是必问。
个人介绍
时间不能太长也不能太短一分钟左右,不过好多人都建议讲三分钟左右,唉,归结到底还是实力不够强啊,没有那么多辉煌的事迹要讲。不过主线是不会错滴,尽可能的表现自己,让面试官对你更有兴趣,迫不及待想进一步了解你。
Java基础
这个主要是考察你的基本功,不能错,可以结合面试题来复习,(坚持到最后,提供有答案的面试题)。接下来的很重要了。java.util包下的集合,必需很熟,源码得撸起来,不然顶住面试官的轰炸。
多线程
看了上面的面经就知道,问得很多,在最后还手撕多线程代码。重要程度不言而喻。JUC包下的东西必须的会啊。这里提供两个多线程的题目,面前必刷多线程代码实践-大厂面试题记得csdn点波关注。同时推荐一本书《Java并发编程实战》,java程序员必看。
Java虚拟机
属于程序员的内功,框架是会不断的更新迭代的,但是最底层的东西是永远不会变的。重要的事情说三遍,很重要很重要很重要,同时推荐一本书《深入理解Java虚拟机》java程序员必看。
数据结构与算法
对于这方面,主要还是刷题,《剑指Offer》里面的67道题是一定要刷完的,我碰到的手写算法的题,好多都是这里面的。如果仅想这67道题就能解决算法还是不太可能的,LeetCode里面的题坚持刷起来啊。
设计模式
设计模式问的比较少,我碰到过一个手写一个单例模式(切记写线程安全的版本)。
数据库
索引必问,不要问为什么。问就是必考。还有就是存储引擎和主从复制等。当然手写SQL还是会有得,还是那句话最基础的不能错。
申明一下大厂看重基础原理。小厂看重的是项目,就是想招那种上来就能干活的。
我了解到对于普通学校想进大厂,由于没有名校的光环,那么我们可以从几个方面入手:
第一大学期间获取计算机竞赛的奖项。往简历上填(乱七八糟的奖就不要往上写),这些奖能展现出你的实力。简历筛选更有希望过。 第二项目经历:如果能让面试官看到你的项目,更好。 第三实习经历:实习经历能说明你有实战的经验在实际生产环境干过,所以会加分的。对于大数据框架方面的东西我就不说了,粘出蘑菇街面经以供参考。
蘑菇街一面视频面试,上来先做了自我介绍。
使用mysql创建一张表,然后又select查询语句; 问我脚本命令。awk、sed、cut、sort,这些命令的作用。 知道哪些java集合。 Http是有连接的还是无连接的。 TCP和UDP的区别。最后写了点java代码,很简单入门级的
又开始写java代码,很简单的java代码
总体上,问的很简单,不深入底层。
蘑菇街二面难度挺大的,跟一面完全不在一个档次上
大数据框架
Yarn怎么做高可用,NodeManage挂了怎么办,task挂了怎么办。 hive内部表和外部表的区别。 项目中遇到的问题。 hive中有没有自定义过udf函数,用来干嘛。 谈一下spark。 spark SQL和hive SQL的区别。 storm和spark的区别。 用过flink吗,谈一下。 hbase问了一些问题。接下来java基础
谈一下GC. 新生区怎么进行垃圾回收的。 有哪些垃圾回收器。 他们的使用场景。 遇到了堆内存溢出怎么办。。 遇到了死锁怎么分析与解决。 TCP粘包是怎么解决的? 用的的解码器是什么?手写代码部分
写3个线程轮流打印1-1000数据库
mysql主从复制知道吗,原理是什么。 binary log里面是怎么存的。 master和slave中具体是怎么样通信实现主从复制的。 蘑菇街三面java基础部分
java中能实现数据安全的机制有哪些。 synchronized和ReentryLock的区别。 谈一下volatile。 volatile是怎样实现指令重排的。 谈一下CAS。 知道ABA问题吗,怎么解决的。 知道死锁吗,遇到这种情况那你是怎么解决的。 谈一下ConcurrentHashMap是怎样实现同步的。 知道一致性哈希算法。大数据框架
你常用的大数据组件。 yarn调优的方案有哪些。 当你遇到了一个MR跑的很慢,你会怎么办。 hr面 自我介绍。 讲一下简历上的比赛经历。 讲项目开发的背景。 在项目中担任什么角色。 在做项目的过程中,你印象最深的事是什么。 如果再给你重新开发这个项目,有什么要改进的地方。 你的性格是怎么样的。 有什么爱好。总体感觉还是很不错的
最后希望读过这篇文章的人,我们都能够一起加油,向大厂冲啊!!!
小福利来啦。
先上图,如果需要的请关注私信博主。