TP_Link的面试问题:
1.自我介绍
2.说说项目以及由项目问题
3.线程池的种类
1.固定数量的线程池:这个比较好理解,即线程的数量是固定的,线程并不会随着任务的多少而变化。可以发现他最终是通过实例化ThreadPoolExecutor来实现。
2.并行线程池:这个是1.8中新加入的线程池,可以看到主要使用了ForkJoin相关的操作
3.只有一个线程的线程池:其实这个可以不称为线程池,因为只有一个线程。核心线程=最大线程=1,这个比较适合需要保证队列中任务顺序执行的场景。
4.缓存线程池:他根据需要创建线程,没有核心线程,当60s内没有任务时,将会回收存活的线程,60s内有任务时,他可以重用已有的线程。注意他的工作队列是SynchronousQueue,这里简单的说一下,他的每一个put操作必须等待take操作,这意味着如果任务生产速度大于消费速度,那么他将不会创建新线程。该线程池适合执行大量小任务的场景。
5.延时线程池:ScheduledThreadPoolExecutor继承了ThreadPoolExecutor,所以super最终会调到ThreadPoolExecutor的构造函数,可以看到,最大线程数为int最大值,工作队列为延时队列DelayedWorkQueue,该线程池适合执行延时任务。
五种线程池的使用场景
-
newSingleThreadExecutor:一个单线程的线程池,可以用于需要保证顺序执行的场景,并且只有一个线程在执行。
-
newFixedThreadPool:一个固定大小的线程池,可以用于已知并发压力的情况下,对线程数做限制。
-
newCachedThreadPool:一个可以无限扩大的线程池,比较适合处理执行时间比较小的任务。
-
newScheduledThreadPool:可以延时启动,定时启动的线程池,适用于需要多个后台线程执行周期任务的场景。
-
newWorkStealingPool:一个拥有多个任务队列的线程池,可以减少连接数,创建当前可用cpu数量的线程来并行执行。
线程池任务执行流程:
-
当线程池小于corePoolSize时,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。
-
当线程池达到corePoolSize时,新提交任务将被放入workQueue中,等待线程池中任务调度执行
-
当workQueue已满,且maximumPoolSize>corePoolSize时,新提交任务会创建新线程执行任务
-
当提交任务数超过maximumPoolSize时,新提交任务由RejectedExecutionHandler处理
-
当线程池中超过corePoolSize线程,空闲时间达到keepAliveTime时,关闭空闲线程
-
当设置allowCoreThreadTimeOut(true)时,线程池中corePoolSize线程空闲时间达到keepAliveTime也将关闭
4.如何创建线程
1)继承Thread类创建线程
2)实现Runnable接口创建线程
3)使用Callable和Future创建线程
4)使用线程池例如用Executor框架
5java多态的体现
子类对象指向父类的应用。实现对父类方法的重写。
是一种的动态的绑定技术。是指的是在执行期间而不是编译期间判断对象的实际类型调用相关的方法。多态就是一个行为具有多个不同的变现的形式或者是形态的能力。多态就是同一个接口使用不同实例进而实现不同的操作。
多态的概念:同一操作作用于不同对象,可以有不同的解释,有不同的执行结果,这就是多态,简单来说就是:父类的引用指向子类对象。
6.笔试最长递增子串的长度的思路:动态规划
public int findLengthOfLCIS(int[] nums) {
if (nums.length == 0) {
return 0;
}
int result = 1;
int length = 1;
//遍历 一次比较大小
for (int i = 1; i < nums.length; i++) {
if (nums[i] > nums[i - 1]) {
length++;
result = result >= length ? result : length;
} else {
length = 1;
}
}
return result;
}
新网银行 大数据算法实习面经
一面:
1,RF的原理,和选用理由
2,过拟合的原因是什么,从数据分布的角度解释
3,rf和boosting算法的区别
4,10亿个数选最大的K个,用什么方法,复杂度多少 。分而治之的思想
5,有开发经验吗,sql会吗
6, 25匹马赛跑经典智力题
二面:
2是在一个矩阵中返回最大的正方形大小。我当时想的就是最简单的方法。
模拟高铁卖票和验票的问题,怎么编写方法去读取买票和验票的文件,验证验票和买票文件。开共享面板,编码实现这个流程。
二面:
1.给一个递增的数组,需要找到索引和值相等的值并返回,怎么找?(我回答的是二分查找,提示说怎么确定查找的值,构造一个(值减索引)的数组就可以二分)
2.给一个只能够生成3以内整数的随机函数rand(3),问怎么实现rand(5)?(我最先想的是两次rand(3)求和去掉6,面试官提示说要每个数出现的概率相等,想了一下用if else就可以做到
微众大数据实习一面组件部署
项目实现细节
起了几个Task?
用的Standalone、YARN还是K8S?原理的是什么
聊聊HBase,读流程,写流程
HLog写入失败了怎么办
如果Region挂了怎么办,那怎么恢复呢?
MemoStore刷不到HFile里怎么办?
Flink的excatly-one是怎么实现的?
如果在这个过程中,Task挂掉了怎么办?
checkpoint精准一次跟source和sink有关系吗?
反射机制的实现原理
JAVA反射机制是在运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取类信息以及动态调用对象内容就称为java语言的反射机制。
原理是:我们知道,要使用一个类,就要先把它加载到虚拟机中,生成一个Class对象。这个class对象就保存了这个类的一切信息。反射机制的实现,就是获取这个Class对象,通过Class对象去访问类、对象的元数据以及运行时的数据。有三种方法获得类的Class对象:Class.forName(String className)、className.class、实例对象.getClass();
Java的反射机制:操作的就是这个对象的.class文件,首先加载相应类的字节码(运行eclipse的时候,.class文件的字节码会加载到内存中),随后解剖(反射 reflect)出字节码中的构造函数、方法以及变量(字段),或者说是取出。
Java有哪些比较熟的?:内存模型 jvm的相关模型
常见的集合框架
介绍一下优先队列
说说HashMap由什么构成的 :数组+链表+红黑树
扩容机制 :大于0.75的整个长度的时候就扩容,先申请2倍的长度的数组 再将原来的数据复制到现在的,在并将整个数据添加其
怎么产生闭环死锁的?:多线程的时候,由于是1.7之前采用的是的头部插入法,所在在多线程的时候可能出现的是封闭的闭环。
1.8之后还存在吗?为什么?不存在,由于采用的是的尾部插入方法。但是存在的是数据的丢失。所以改进为CAS+node+Synchronized
那ConcurrentHashMap怎么实现线程安全的?:1.7前采用的分段锁的机制,但是1.8以后采用的是CAS+node+Synchronized机制来实现的
TCP和IP的区别
虚拟内存:虚拟内存能代替内存吗?
算法题:
1实现一个random(m,n)方法,返回m到n的随机数
m<m+Math.random()<n
10G的文件,每一行一个数字,1G的内存,将10G的文件排成有序的
分而治之的思想
能在仔细介绍一下HBase的整体架构吗
Master干什么的,读取、写入操作具体指什么?
2. java hashmap的底层实现 避免冲突的方法 java解决冲突的方法是哪个
arraylist与linklist的区别?为什么有这种区别?
3. java创建多线程的三种方式,java多线程锁,写过什么demo(我答生产者消费者模型)
4. HTTP是一种无状态协议,java里面怎么解决这种无状态
5. JVM 堆内存模型、minGC与fullGC过程、JVM调优
6. 计算机网络 TCP、UDP协议的区别
7. 数据结构 数据结构有几种排序算法?你最熟悉哪一种?讲讲快排原理(不稳定)
8. hadoop mapreduce、hdfs的底层实现原理
9. 问问hive方面的(我不会)
10. mysql 事务特性,讲讲隔离性,索引的类型、作用,查询调优。
百度面试经验
1.自我介绍
2.说一下做过的项目
3.问了一些项目上的问题
4.问PHP7的新特性有哪些
5.问数据库设计为什么进行分表,分库
6.问Mysql实现底层btree机制
7.问web开发方面会遇到哪些缓存,分别如何优化
8.问如何用关联数组实现栈
9.问你数据库进行主从分离主要的原理
10.问你php的内存回收机制
11.nginx负载均衡有哪些,如果其中一台服务器挂掉,报警机制如何实现
12.缓存命中率需要怎么提高,原理是什么
13.问如何修改php/zend内核,使其满足程序员的编程需要,方便操作
14.redis,会问哪些场景用,解决了什么问题,数据量有多少
美团面试经验:
一面
1.谈谈你对HDFS的了解
2.Hadoop2.0做了哪些改动
3.Spark与MR的区别在哪里
4.知道除了Spark之外的大数据处理框架嘛
5.Spark shuffle,说说
6.StringBuilder与StringBuffer的区别
7.问你HashMap与Hashtable的区别
8.问你二叉树的数据结构是什么样的
9.数据库索引的实现原理
10.jvm垃圾收集器,挑一种讲讲
二面
1.讲讲你的日志流量分析系统项目
2.讲讲NameNode与DataNode
3.当数据还在跑的时候,我要查这个数据怎么办
4.存储格式的选择 & 行式存储与列式存储的优劣
5.如果我要查一段时间区域的,怎么优化
6.说说数据倾斜,怎么调优的
7.说说你对Hive的理解
8.问Hive怎么转成MR的
9.出现OOM,怎么办
10.shuffle过程中,会将数据写到哪个buffer里去
11.讲讲executor、core、task这些之间的关系
12.平时怎么学习spark的
13.除了大数据,会Spring嘛
14.说说你还会些啥技能
拼多多
一面:
1.问你的项目情况
2.问你一些家庭情况
3.问我港台同胞的话题
4.问你项目有什么创新,说了一堆
5.问你论文竞赛有没有
6.问你在学校的一些情况
然后一面就结束
二面:
1.自我介绍
2.问你python怎么样
3.问你c语言熟悉不,问了几个c语言的东西
4.问你算法,跳台阶,斐波那契数列和dp方式。
5.问tcp的四次挥手中的time—wait状态何时出现,有什么意义。
6.操作系统的fork进程返回什么,
猿辅导
一面:
1.先是自我介绍
2.问为什么选这个岗位
3.问你了解hadoop的哪些组件,让你说一遍。
4.让讲一下hdfs的写入过程,发请求给namenode,返回一个地址进行写入,写入完告诉namenode,namenode完成副本备份。
5.讲一下项目中的遇到的问题,多线程,并发工具,并发容器。
6.讲一下如何设计一个高并发的秒杀系统
7.问python了解吗,讲一下线程和协程
8.Hadoop的核心配置是什么
9.问“jps”命令的用处?
10.问HDFS存储的机制?
协程自带上下文,切换不需要刷新cpu上下文和寄存器。更适合并发。协程和线程适用场景的区别。
二面:
1.自我介绍
2.问了一下家庭情况和城市意向
3.问大学有啥困难和挑战没有
4.问学习成绩,在学校做了什么
5.让你评价自己
6.问你对公司的了解
7.对于加班怎么看
冠群驰骋
1.先是自我介绍
2.问你做过的项目
3.说一下项目中的问题
4.举一个简单的例子说明mapreduce是怎么来运行的 ?
5.问hadoop中Combiner的作用?
6.问不同语言的优缺点
7.问hive有哪些保存元数据的方式,个有什么特点
8.问hive内部表和外部表的区别
9. hbase的rowkey怎么创建好?列族怎么创建比较好?
10.用mapreduce怎么处理数据倾斜问题?
11.hadoop框架中怎么来优化
搜狐畅游数据工程师校招面经一、HR面
1 做了哪些项目
2 使用什么技术
3 哪个是你主导的项目,一共开发多少个接口,项目多长时间,数据库有多少个表
二、技术问题
1. 用自己擅长的语言实现非递归单链表反转 现场手写
2 .问Hadoop和spark的主要区别
3 .Hadoop中一个大文件进行排序,如何保证整体有序?sort只会保证单个节点的数据有序
4 .问Hive中有哪些udf
5 .Hadoop中文件put get的过程详细描述
6 .Java中有哪些GC算法
7 .Java中的弱引用 强引用和软引用分别在哪些场景中使用
8.Hadoop和spark的主要区别-这个问题基本都会问到
记住3点最重要的不同之处:
1.spark消除了冗余的 HDFS 读写: Hadoop 每次 shuffle 操作后,必须写到磁盘,而 Spark 在 shuffle 后不一定落盘,可以 cache 到内存中,
以便迭代时使用。如果操作复杂,很多的 shufle 操作,那么 Hadoop 的读写 IO 时间会大大增加,也是 Hive 更慢的主要原因了。
2.spark消除了冗余的 MapReduce 阶段: Hadoop 的 shuffle 操作一定连着完整的 MapReduce 操作,冗余繁琐。而 Spark 基于 RDD 提供了丰富的算子操作,
且 reduce 操作产生 shuffle 数据,可以缓存在内存中。
3.JVM 的优化: Hadoop 每次 MapReduce 操作,启动一个 Task 便会启动一次 JVM,基于进程的操作。而 Spark 每次 MapReduce 操作是基于线程的,
只在启动 Executor 是启动一次 JVM,内存的 Task 操作是在线程复用的。每次启动 JVM 的时间可能就需要几秒甚至十几秒,那么当 Task 多了,这个时间 Hadoop 不知道比 Spark 慢了多。
9.Hive中有哪些UDF
10.你写过哪些UDF?在哪种情况下会使用该UDF?
天猫数据研发实习生二面三面面经二面重基础
1.string和stringbuff的区别
2.==和equals的区别
3.什么是多态
4.垃圾回收算法,追问两个互相引用的对象能否回收
5.三个线程按指定顺序执行的实现方法
6.统计班级课程成绩有三门高于90的学生信息
7.InnoDB引擎
8.唯一索引和主键的区别
9.TCP三次握手,四次挥手
10TCP 与UDP区别
11.介绍项目(没追问面试就结束了)
面试官全程冷漠,基本无交流,回答的也不好,以为会挂
一周后收到在线测评通知
三面:进链接在线写代码,电话沟通
10亿条ipv4数据,用8G内存,单线程找出频次最高的100条。
跟面试官交流思路之后开始写代码,偶尔提示,一个小时后还没有完成,面试官结束了面试
阿里高德数据研发实习生4.8 笔试 做的比较差 0_0
4.13 一面
两个线段求交点
怎么快速查找一个附近的酒店
希尔排序
空间数据库
拟合曲线 泰森多边形 空间插值
讲项目
4.17 补笔试
两道题
4.22 二面
讲项目
网络编程相关 IO模型
mysql索引
GIS相关知识 地图投影
4.23 三面
项目
用通俗的语言讲讲辐亮度和辐照度 举个例子(项目相关)
进程线程
数据库索引
一道数学题
讲项目
七层网络模型 IO模型
链表和数组区别 使用场景
线程进程
一道leecode 中等难度题
美团的大数据面试经验
美团一面(54minutes):
1.万年不变自我介绍
2.项目介绍,聊了很多里面的细节。
3.熟悉红黑树吗?(不会)
4.B树和B+树了解吗?
5.谈谈数据库索引,有什么用?
6.Innodb和MyIsam有什么区别?
7.ACID
8.数据库事务
9.left join 和 join区别
10.索引失效
11.hashtable和hashmap有什么区别
12.StringBuffer和StringBuilder区别
13.排序算法,复杂的,稳定性,快排的实现和优化。
13.编程题:给定有序数组,找到两个数使得它俩的和等于目标值。
14.发散题:3只老鼠,8瓶药,其中有一瓶毒药,假设喝到毒药后一小时死亡,可以多瓶混合一起喝,怎么才能用最少的时间找到哪一瓶是毒药。(只要1小时)
美团二面(30minutes):
1.万年不变自我介绍
2.项目
3.平时怎么学习的,为什么跨专业做编程,职业规划,看你投的上海,有没有兴趣来北京巴拉巴拉的
4.简单问了和hdfs副本数,副本怎么存储
5.hive调优
6.反问阶段
美团二面加面(25minutes):
1.万年不变自我介绍
2.数据库索引类型有哪些?有什么作用
3.假设给定你四个字段分别为一个int,一个double,一个日期类型,一个varchar(20)的数据,共100万条,计算数据大小(不会)
4.DAG为什么适合spark(随便说了一通,也不知道对不对)
美团的面试大概就是这么多了,一面和二面的面试官都特别好,不会的东西会慢慢引导你,或者说没关系,忘了也没事什么的,加面的感觉像leader有点严肃,全程无尿点,因为一二面都基本回答出来了,加面的时候答的很差,过了20+天收到HR电话,10天后收到offer。
2020暑期实习快手大数据研发Java基础
1. 分区
2. 对象存储
3. 垃圾回收原理
4. sleep和wait区别
代码算法
1. 懒汉模式单例
别问,问就是不会
2. 大数相加,输入是两个String。
写的代码有bug,但是面试官说不浪费时间了,给过。
网络
本菜鸡直接说不会,堵住面试官的嘴,hhhh。
数据库
1. 存储引擎
我顺便还说了优缺点
2. 底层存储
3. 行列存储
4. 谓词下推(predicate pushdown)
别问,问就是不会
5. 写SQL
一开始写错了,在where里面用aggregate function,后来改成了having
评价:基础不太过关。所以给了一道非常简单的编程题目(手动笑哭)。说我写代码思路比较清晰,非常流畅。虽然有bug,也给过了。对数据库知识的掌握优于同龄人。写sql错了,但是经过提醒能马上反应过来,给个及格。说看过我的博客和Github,觉得还不错。这个居然真的有面试官去看,看来我以后博客要好好写hhh。
岗位情况:广告数仓,数据的存储计算。
要求技能:Hadoop, spark, sql, java, slam, python。
紧接着就是二面。这种连着面的我还是有点慌。
自我介绍
讲了项目。
Java基础
1. static作用,怎么实现的?
怎么实现的木有答对
2. spring框架
讲了AOP, IOC。但是不知道IOC底层如何实现
3. 第一个java项目代码的亮点。
代码算法
1. 两个栈实现队列
大数据
本菜鸡直接说不会
数据库
1. sql。表结构grade, subject, name, score。查询分年级分科目统计不同年级不同科目考试成绩TOP10。没写出来
面试官发现他问的我都不会,只好让我讲项目。我的项目还算比较多。讲了一个自己优化信号灯的项目。面试官说思路非常好。