互联网提早批基本告一段落,大大小小的offer也拿了一些,秉着回报社会,坚持中国特点社会主义,挽救新一代码农的思想,整理了下各个公司的面筋、考点,但愿能激励各位搬砖工,起到鼓足干劲,力争上游的做用O(∩_∩)Ohtml
小姐姐♀说先拿出offer炸炸人,不然没人看...咱不是那么庸俗的人,但也没有那么脱俗...python
鄙人从7月中旬开始找工做,找的是大数据研发 or 大数据算法方向,反正围着大数据打☯️,截止到9.12号为止,腾讯、美团、360安全研究院、搜狗、贝壳 都收到意向offerlinux
固然挂面也吃了很多😭面试
offer的具体工做内容不介绍了,怕被HR小姐姐查出来,请我去喝茶...正则表达式
本人北京985渣硕一枚,是真的渣,舍友商汤、旷世,出国留学,学校中各种大佬一坨,在夹缝中求生,混口饭吃算法
主攻方向:无。领导搞行政的,每天端茶倒水取快递,外挂写不尽的基金本子,论文全靠我的参悟+上天怜悯数据库
说点正事吧,关于工做路线,我最终选择的是大数据研发方向,主要缘由是研一上了点分布式的课,拿出来吹一吹,还能唬的住人。我的感受算法也能作,研发、算法半斤八两吧设计模式
学校这边的话,有优秀高校背书天然要好,没有的话,就没有吧,大牛们不差这点,渣渣们你们也强不到哪去,没必要强求数组
项目,在读书过程当中,必定要了解个项目,不然面试官真没啥问题你的,尬场基本就凉凉了。这项目没必要真的是你的,当找工做时,全部前辈、朋友的项目全都是你的,包装下,你说是你的就是你的,没人去查你底细的,关键了解要深,这样和别人说底气才足。我有幸给一个数据流项目作了些边角任务,但在简历上,我成为了该项目的负责人...本身体会包装的艺术...安全
简历,我之前认为你们“没见过猪跑还没吃过猪肉吗”,网上那么多强调简历重要性的,直到我看见我小师弟的简历,发现真的有人没吃过猪肉(我学硕他专硕,一块儿找工做,他有百度大厂背书,可这工做找的唉...)。最简单的修改方法,让你附近的同窗看看,第一眼感受能够吗,能够就ok,不能够就gg,照着人家的改改
如今前头,准备要早,投的也要早基本7月中旬就陆陆续续开始有提早批了,错过就没了>...<
这货也不干,过去一整阵子了,我能写多少给你们写多少吧,考点网上一抓一大把
技术面
先说说技术面流程:
必定要把主动权掌握在本身手中,面试官会问不少你平时不了解或压根不知道的问题,这时你能够说平时我用不到这些(能够理解啊,应届生上哪懂这么多邪门歪道啊,大佬请无视我),而后说本身对xxx领域有点研究,引导他来问你
对面提问你时,其实很考验你答辩技巧的,当你熟悉的东西时,那很OK,balabala便可,问你不熟悉的(你只知道点皮毛,但也在简历上写了),你能够说“我作项目时碰到过一点,大致查了下,有点印象,您能够试着问一下”,这样会让面试官把指望放低,问题难度也会下降,答出来加分,答不出来也无所谓
HR面
下面具体拉拉各厂面试经历吧,我把比较有特点的问题列出来,统一的我放在下面知识点了,重写太麻烦了...
难度:easy,可能我比较幸运?
一面
电话面,问了问Java的基础问题,其中有印象的是
二面
现场面,基本围绕着你简历上问
三面
总监面,这面基本聊聊实习的项目,用到的技术等,不知死活的我问了问sp的问题...建议各位0-offer党(offer满天飞的大佬请无视我)不要在该环节问sp的问题,最后给不给sp,好像不是这伙计定的,具体仍是看聊得状况,聊开了什么都能聊,聊不开,那就88
难度:normal
1、二面
后面知识点都有我就不展开写了o_o ....
三面
问我刷题不?(这想要我什么回答呢),杯子倒水智力题,实习项目聊一聊
难度:normal+
一面
上来怼了我一堆python的东西,我python当脚本用的,说能不能换个方向聊一聊,而后怼了一堆
开始问题偏向于算法,后来我说我其实擅长架构类的东西...小姐姐说,这样啊,不过看你答的还能够啊,架构我就不问你了...
二面
问了些数据仓库的问题,雪花型和星型数据库等,我表示一脸懵逼,而后和他扯Spark Streaming,他对这个还挺感兴趣的,算是晃点住了,后面说加班怎么看,而后他开始介绍他NB的团队,我开始瞻仰,膜拜...最后问问能不能来实习,基本回答都是能(不能的好像都没了...),时间节点本身须要把握一下,最好等到全部offer都下来的时候,我本身预估是10月中旬吧
难度:father
一面
二面
面试官不是很感冒,问我还有什么补充了,我居然说没...猝,血淋淋的教训啊
难度:hard
一面
两个面试官,发了张卷子,里面什么题都有:
二面
难度:normal+
讲道理贝壳我是抱着去打小怪的心态去的,并没打算留下的,可是面试体验很好,最后给的薪水超高、福利也爆炸,缺点的话你们懂得,偏养老,看你们选择吧。算是帮一面的大哥打波广告吧
一面
数据倾斜怎么处理,我我的感受我回答的比较差,之前没仔细思考过这个问题,后来查了查发现里面有不少道道。
但面试官很nice,问了问我其余方面,感受还不错,后面和我讨论了30分钟的职业发展问题,感受来的很值,大哥我能加你微信吗...
二面
比较年轻的高冷小哥面个人
写给须要的,不想死磕互联网的人:ヽ(。◕‿◕。)ノ
最后,送上我面试过程当中整理出的知识点(可能有误-_-||),供你们查漏补全,但愿你们都能找到个好offer (@^0^@)
这就是一天坑,基本问不完,难度也是拉满的那种...
Q:进程和线程的区别?
Q:进程间通讯方式?
核心目的是交换数据
除了会枚举,这些名词的具体概念也应该作到心中有数,传送门
Q:线程间通讯方式?
核心目的是同步
Q:Callable、Runnable区别?
Q:Future和Callable的关系?
Q:建立线程的方法?
Q:volatile关键字的做用?
Q:synchronized的用法?
Q:讲一下Java内存模型?
网上一大堆,引用前人的清明上河图
Q:CountDownLatch和CyclicBarrier了解吗?
Q:Semaphore用法?
控制一组资源的使用,经过acquire()和release()获取和释放这组锁,盼盼防盗门
Q:ThreadLocal做用?
修饰变量,控制变量做用域,使变量在同一个线程内的若干个函数中共享。
Q:单例与多例的区别?
Q:锁释放的时机?
Q:notify唤醒时机?
notify后不会马上唤醒处于线程等待池中的线程,而是等当前同步代码块执行完,才释放当前的对象锁,并唤醒等待线程。
Q:notify和notifyAll区别?
notify通知一个线程获取锁,而notifyAll通知全部相关的线程去竞争锁
Q:讲一下Lock?
Lock是为了弥补synchronized的缺陷而诞生的,主要解决两种场景
Lock是一个类,并不是Java自己带的关键字,相对于synchronized而言,须要手动释放锁。
Q:锁的种类?
集合相对容易,常规送分题,基本都会问到HashMap
Q:TreeSet特性?
内部元素经过compare排序。
Q:LinkedHashMap特性?
内部有个双向链表维护了插入key的顺序,使得map可以依据插入key的顺序迭代。
Q:ArrayList与Vector的差异?
ArrayList是非线程安全的,Vector是线程安全的。
Q:LinkedList与ArrayList的差异?
Q:HashMap与HashTable的差异?
Q:Set与List的差异?各自有哪些子类?
Set不容许重复元素,List容许重复元素,List有索引
Q:hashCode()、equals()、==区别?
Q:Java容器中添加的对象是引用仍是值?
引用
Q:Iterator和ListIterator的区别?
Q:HashMap实现?
内容巨多,引用大佬面经,值得一看,目录供你们参考
PS:HashSet是经过HashMap实现的
Q:ConcurrentHashMap和HashTable区别?
这块主要介绍JVM内存的划分以及GC算法
Q:什么是内存泄漏和内存溢出?
内存泄漏最后会致使没有足够的空间分配对象,从而致使内存溢出,固然也可能开始分配过大的对象致使内存溢出
Q:致使内存溢出的因素?
Q:JVM内存划分?
基本说出上面三条就能够了,更详细的见下图,前门
Q:简单说一下垃圾回收?
这可不简单...
垃圾定义:
堆中内存分布:
垃圾回收算法:
Q:Minor GC、Major GC和 Full GC的区别?
Q:Full GC触发时机?
Q:什么是常量池?
常量池分为静态常量池和运行时常量池。
包含的信息:
该问题通常会引出字符串常量比较
String s1 = "Hello";
String s2 = "Hello";
String s3 = "Hel" + "lo";
String s4 = "Hel";
String s5 = "lo";
String s6 = s4 + s5;
String s7 = "Hel" + new String("lo");
String s8 = new String("Hello");
String s9 = s8.intern();
System.out.println(s1 == s2); // true,直接取自常量池
System.out.println(s1 == s3); // true,在编译时会优化成常量池内字符串的拼接,区别 s6
System.out.println(s1 == s6); // false,本质上是变量拼接,区别 s3
System.out.println(s1 == s7); // false,含有对象 new String("lo")
System.out.println(s1 == s8); // false,对象与字符串常量比较
System.out.println(s1 == s9); // true,字面量比较
复制代码
面试时有人问到过,回去大概查了下
Q:讲一下类加载过程?
加载:将*.class文件经过各类类加载器装载到内存中
连接:分为三步
初始化:对类变量初始化,执行类变量的构造器
Q:Java初始化顺序?
这是在爱奇艺碰到的一面试道题,当时差点两眼一抹黑过去了...头一次发现这么多东西要初始化
类内容(静态变量、静态初始化块) => 实例内容(变量、初始化块、构造器)
父类的(静态变量、静态初始化块)=> 子类的(静态变量、静态初始化块)=> 父类的(变量、初始化块、构造器)=> 子类的(变量、初始化块、构造器)
Q:Java类加载器的种类?
Q:双亲委派模式了解吗?
我理解的深度比较浅,我的理解,委派就是加载类时先看上层加载过没,若是加载过了,当前就不加载了,直接使用当成加载器加载的类。
其次是加载顺序,System->Extension->Boostrap
优势:
这些问题很弱鸡,但考的也比较多
Q:面向对象的三大特性?
顺口溜通常的背出来:封装、继承、多态
而后会让你讲讲这三个特性如何体现,你们本身想一想吧,言之有理便可
Q:Java中接口和抽象类区别?
Q:重载和重写?
猪脑子,老记混
Q:例举一下你了解的设计模式?
通常说五、6个,有个样例就好了
Q:手撸单例?
撸完,让你讲讲内部细节,volatile或多例问题
public class Singleton {
private volatile static Singleton singleton;
private Singleton(){}
public static Singleton getSingleton(){
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
复制代码
Q:TCP3次握手4次挥手?
基本画张图就K.O.了,fate门,内部的问题也建议看一下
Q:TCP为何是必定要是3次握手,而不是2次或3次以上?
2次挥手的问题
在第1次创建过程当中,client请求连接在网络中滞留太久,致使client发送第2次请求,创建完毕后,这时第1次的请求到达server,server接收又维护一连接,但该连接实际上已经做废,浪费了server端的资源。
3次以上的方案
理论上,作到3次以上是可行的,但真正想作到一个完美可靠的通讯是不可能的,由于每次答复都是对上次请求的响应,但该次答复在不可靠的信道中还是会丢失的,考虑到现实效率问题,3次足以。
Q:TCP为何是4次挥手,而不是3次呢?
Q:TCP半链接池与全链接池?
Q:TCP和UDP的区别?
Q:TCP和UDP的应用?
Q:TCP/IP与OSI模型?
TCP/IP模型,自下而上
OSI模型,自下而上
Q:ping命令基于哪一种协议?
ICMP
Q:阻塞式和非阻塞式IO区别?
阻塞式
非阻塞式
用数据库作过开发,可是了解的不深刻,面试问我会不会写SQL时,我多答“简单的能够,复杂的尝试一下”...SQL复杂起来真不是人写的...
Q:汇集索引和非汇集索引区别?
Q:where、group by、having执行顺序?
Q:星型、雪花结构?
Q:SQL纵向转横向,横向转纵列?
基本上,除了 group by + 汇集函数 外,这是最难的 SQL 题了
sum(case when A='a' then B else 0 end) as D
这里须要用sum或其余汇集函数,由于做用在一个group中
核心用union
记住这两条作到触类旁通就能够了,Demo
Q:脏读、不可重复读、幻读?
这引出事务隔离级别
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |
Q:join实现的三种方式?
Q:查看xxx端口占用?
Q:查看xxx进程占用?
Q:查看CPU使用状况?
Q:查看内存使用状况?
Q:查看硬盘使用状况?
Q:$0、$n、$#、$*、$@、$?、$$含义?
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本的第n个参数 |
$# | 传递给脚本的参数个数 |
$* | 传递给脚本全部参数 |
$@ | 传递给脚本全部参数。与$*有小差异,出门下扒 |
$? | 上个命令的退出状态 |
$$ | 当前Shell进程ID |
Q:>、>>区别?
Q:>、1>、2>、2>&一、2>1区别?
Q:定时任务命令?
算法的海洋的一望无际,可是应付面试题的算法,我的认为《剑指offer》一本足矣...
我的《剑指offer》刷了大概四遍,基本上看到一道题,全部解法都知道,面试上也基本从这里出
我遇到现场出的算法题(除了《剑指offer》上的),通常是暴力搜索题,不要上来想DP...
经典问题
智力题
这方面通常问的是偏向于各种框架
以上框架,你们各取所需吧,总有几个要能拿出来吹的,我我的主要吹Spark这块
Hive、HBase通常也是当工具用的,主要问平时用没用过,用过的话就会多问些,我通常是回答搭建过,照着文档看过一阵子,对方通常就不问了
Zookeeper在底层维护分布式的一致性,多少了解一些分布式协议raft这类的也是加分点
Q:两表Join方案?
三、4方案了解便可,我的感受有些不靠谱,面试中通常没提,面试官通常要求到2,有数据倾斜的另说
Q:MapReduce过程?
大数据岗位必考题
三言两语也说不清,建议去看网上大佬的,传送门
看完后能回答以下几个问题便可:
Q:Hadoop 中 Secondary NameNode做用?
合并fsimage与editlog
Q:Yarn架构?
Q:Yarn相对于Hadoop的优点,或说为何要有Yarn?
Q:Yarn的三种调度器?
这三张图很好,但我认为这样理解的深度不够...有兴趣的多看看
Q:Yarn延迟调度的含义?
主要针对看成业所需的资源,在本地并无知足时,会延迟一段时间,再尝试调度,实在不行时会放到别的机器上调度,主要由于本地调度效率最高。
Q:Spark有几种部署模式?
Q:standalone基本架构?
Q:groupByKey和reduceByKey哪一个效率高?
Q:数据倾斜是什么?如何处理?
必考题,能够问的很深...
定义:shuffle过程当中,某个几个key对应的value太多,集中在某一个reduce task中,致使该task处理过慢或直接崩掉(out of memory)
解决方案:
求大佬点拨,我的认为随机数这种算法能够解决必定的数据倾斜,但
Q:倾斜join如何处理?
和上面的数据倾斜有必定联系,但不彻底相同
Q:基本概念?
问的不少,主要看你对Spark的了解程度
Q:枚举一下transform和action?
我通常和面试官吹 Spark Streaming,这部分提供给有须要的人吧
Q:Spark Streaming原理?
将数据流划分红mini batch,本质上是小批量数据的连续处理,核心是定时触发Job的提交,除此以外,针对流计算中window一类的概念作了一些特殊处理,面试官要是还问你就给他展开讲讲...这里我就不展开了
Q:数据接收方式?
这点我通常结合Kafka来讲,从Kafka接受数据有两种方案:
Q:基于receiver数据接收的实现细节?
面试官这点主要想了解你对Spark Streaming源码的熟悉程度,是否真正的深刻研究过其接收过程,其实糊弄一下仍是比较容易的...
Q:exactly once如何保证?
我的认为这个问题是个很狠的问题,这个不是某几个组件的使用问题,而是整个系统的协调组织,我主要从三个方面来讲这个问题
个人理解就这么多,感受很浅,欢迎大佬补充...
Q:基本架构?
能把以上这些概念串起来基本就OK
Q:介绍下ISR副本策略?
一个leader与一堆副本follower,follower从leader上拉取副本并返回ack,leader收集到足够多的ack后,认为该message是committed,并返回给client。
该leader与这些follower被称为 in sync 状态,这个集合是动态变化的,当某个follower拉下太多时,会被踢出该集合,从而保证了能快速的响应用户请求,当它追上来时会再加入该集合。
为了保证数据不丢失,能够设置该集合最少须要多少个follwer,当小于该数时该partition便不可用
Q:介绍下HBase的原理与设计?
讲的很棒的一篇文章,唐宫仕女图
看完后能复述下面基本概念
其实还有章ML没写,但感受问的不深就没写了,你们有需求的话我在补上吧 (ฅ´ω`ฅ)
小姐姐说要附上☞【征文连接】
小姐姐说要点赞╰( ̄▽ ̄)╮