2017暑期实习面经分享(大数据&Java&后台)

本文分享了作者在多家知名互联网公司面试的经历,包括阿里、360、唯品会、华为、腾讯和大疆等公司的面试流程和技术问题,涵盖了Java内存管理、分布式系统、大数据平台等多个领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿里(内推一面,卒)
时间:3月初;形式:电话面;岗位:Java研发(分布式方向)
内容:
1、Java的内存管理
2、现有的GC算法
3、HashMap是不是线程安全的,ConcurrentHashMap怎么实现线程安全
4、volatie和synchronized的原理和对比
5、tcp与udp的区别
6、socket通信的过程
7、AOP有用过吗?原理是啥?
8、熟悉哪些算法?
9、线性回归的原理?
10、用过哪些机器学习算法?简单介绍下
11、Hadoop的MapReduce
12、HDFS的基本原理
13、Spark的架构
14、HBase的基本原理和架构,读写性能对比(读快还是写快)
15、HBase与传统关系型数据库(如MySQL)的区别
16、简单介绍下B+树,为何MySQL以B+树作为数据结构
17、事务的四大原则
18、CAP原则
360(笔试+一面,卒)
时间:3月下旬;形式:视频面试;岗位:大数据平台研发(偏架构底层)
内容:
1、Scala的好处
2、Java和Scala的区别
3、为什么spark要用scala写?
4、介绍下“基于Spark的xxx大数据智能分析平台”这个项目,吹项目……(技术选型为什么等等)
5、对spark streaming的了解,为什么要用spark streaming做流计算层,对其他流计算框架的了解
6、介绍下Spark任务提交之后发生了什么
7、如果一个Task发生问题了,spark系统怎么去感知和定位?(GG了这题)
8、Spark的运行模式(local、standalone、yarn、mesos)以及区别
9、有了解过yarn吗?简单介绍下
10、当一个Linux服务器很卡,你怎么定位问题? (内存、cpu、swap区、磁盘I/O、网卡、病毒攻击等角度出发)
11、Java的内存管理(堆和栈)
12、Java调用native方法的方式?JNI。JNI的原理?如何通信的
13、常用GC算法
14、为什么jvm GC要用“分代收集”的算法?
15、G1收集器原理
16、G1收集器与其他的区别,以及优势
唯品会(笔试+两轮技术面,offer)
时间:3月下旬;形式:现场面试;岗位:大数据开发
内容:
一面:技术基础面
主要涉及数据库、hadoop方面的基础知识,不难;另外问了数学建模的比赛细节以及大数据的项目。现场面有个好处,就是介绍项目or比赛时可以边画图边讲,这样双方的思路都很清晰。当时我就是边画平台的架构图边讲,效果不错
二面:部门老大面
全程粤语交流(◎﹏◎);主要问些开放性的题目,实际应用场景的题目,我只记得一题是:“如何判断‘女司机是马路杀手’这个命题的真伪”。当时是从MapReduce的角度出发去思考和解决这个问题的,最后写了伪代码和些许SQL。。。
华为(笔试+两轮面试,offer)
时间:4月上旬;形式:现场面试;岗位:大数据开发
内容:
基本都是聊项目、比赛和实习经历,看你做过什么,偶尔问些java基础问题。。。主要突出你的项目亮点和延伸,让面试官一方面看到你的工程能力,另一方面看到你的技术深度、思考问题的逻辑和深度。。。另外就是聊聊人生了
腾讯(笔试+两轮技术面+HR面,offer)
时间:4月中旬;形式:现场面试;岗位:后台开发
内容:
一面:技术基础面
1、Linux:如何查看系统swap的使用情况
2、TCP三次握手,重点考察序列号seq和ack的序号,画状态图
3、TCP如何保证可靠性,流量控制有什么用
4、TCP的拥塞控制
5、TCP四次挥手:
1)TIME_WAIT的作用
2)Server端同时收到很多client断开连接的请求,都需要进入TIME_WAIT,容易导致Server负载增大,如何解决
3)TCP断开连接有没有什么方式不需要经历TIME_WAIT状态
6、socket通信中,read()的返回值,及对应的情况
7、select和epoll
8、二叉树、B树、B+树的差别,画图说明;为什么大部分数据库都选用B+树作为索引?
9、MySQL的存储引擎有哪些?都有哪些区别?
10、线程安全方面:有哪些锁?
11、线程和进程的区别?进程间通信的方式?
12、20亿qq号,每个qq号唯一,都有对应自己的星座(枚举),设计一个数据结构,开放两个接口:
set(qq, 星座)和get(qq)返回星座(qq为int数据类型)
二面:
全程压力面,连自我介绍都不用了,一上来就问我保研怎么保的……一脸懵逼(◎﹏◎)
1、说下“阿里天池竞赛”,特征工程怎么做的,用来做什么
2、说下你对kafka的理解
3、说下项目中社交app里面的“评论”、“发帖”、“聊天”功能怎么实现的?各自数据模块的联系
(怎么查询一个用户发过的帖子,写SQL)
4、说下app的推荐,跟spark有什么关系
5、MySQL你用什么引擎,为什么
6、说下你对Zookeeper的理解
7、socket的write()有什么参数?是否阻塞?怎么处理阻塞?
8、说下项目里面提到的性能调优(usb通信和编解码协议的优化)
9、C++和Java的区别?Java的垃圾回收算法
10、为什么报“后台开发”?说下你对“后台开发”的理解
12、最后自己主动出击,向面试官介绍了大数据项目架构的设计细节
小结:感觉二面着重看你的简历(项目、比赛、实习等),鸡蛋里挑骨头,考验你的应对能力和抗压能力,并从中找出你的亮点!
三面:HR面
大疆(笔试+两轮技术面)
时间:4月中旬;形式:电话面;岗位:Java实习
内容:
一面:
1、数学建模的比赛:
具体问了怎么做的人脸识别和原理,追问了里面的技术创新点
2、java相关:
说下对容器的了解,map、set、list之间的区别;
LinkedList和ArrayList的区别
map的key能放什么,有什么限制,hashmap的插入原理(相同的key如何解决冲突);
说下TreeSet的原理;
问了j2ee三大框架
3、数据库:常用的聚合函数有哪些;
如何查询截取A表中的信息联合查询B表中的信息;
having的用法;
in和exist的区别
4、大数据的项目:
全程自己在说:架构设计、细节等
5、阐述一个自己熟悉的设计模式
(还有一些……待补充)
二面(终面):
4月28号电话面
1、针对涉及推荐算法的项目刨根问底了一番,最后问了如何改进优化你的推荐算法
2、针对大数据的项目刨根问底了一番,并询问做到哪一个层次,用在哪里;重点询问了数据安全那块怎么处理(提示了一个场景:平台的数据安全,如何设计暴露对外的接口才能保证数据的安全性)
3、问了常用的设计模式,重点挑了工厂模式问
3、最后问能实习多久
### 大数据实习生必备技能 大数据实习生需要具备一系列基础技能和技术能力,以便能够胜任日常工作中涉及的数据处理、分析以及可视化任务。以下是具体所需技能: #### 编程语言 熟练掌握至少一种编程语言对于大数据实习至关重要。Java 是许多企业级框架的基础语言之一,因此即使不追求精通,也需要对其有一定的理解[^1]。除此之外,Python 和 Scala 也是常用的语言,因其易用性和强大的库支持。 #### 数据结构与算法 良好的数据结构和算法基础是解决复杂问题的关键。即使是从事数据分析工作的人才,也可能被要求实现基本的排序或查找算法来优化性能[^1]。 #### Hadoop 生态系统及相关工具 Hadoop 及其生态系统组件(如 Hive, Pig, Spark 等)构成了分布式计算的核心部分。熟悉这些工具可以帮助实习生更有效地管理和操作大规模数据集。 #### SQL 查询能力 SQL 是访问关系型数据库的标准查询语言,几乎所有的商业环境都需要使用它来进行数据检索和管理。优秀的 SQL 技能可以让候选人脱颖而出。 #### 统计学与机器学习基础知识 虽然不一定立即应用于所有项目中,但是了解统计方法论以及初步接触一些简单的预测建模概念会很有帮助[^2]。 #### 软件工程实践 版本控制系统的运用(比如 Git)、单元测试编写习惯以及其他软件开发最佳做法都是不可或缺的部分。 --- ### 学习路径建议 为了成为一名合格的大数据实习生,可以从以下几个方入手规划自己的学习旅程: #### 基础阶段 - **计算机科学基础**:复习并强化数据结构与算法的学习。 - **编程入门**:选择 Python 或 Java 开始练习编码技巧。 #### 进阶阶段 - **大数据平台介绍**:研究 Apache Hadoop 的架构及其主要模块的功能特点。 - **高级编程技术**:深入探索 Spark Streaming 或 Kafka Streams 等实时流处理解决方案。 #### 实践环节 - 寻找开源项目参与贡献或者自行设计小型实验验证所学到理论知识的实际效果。 - 利用 Kaggle 平台参加竞赛积累经验的同时提升个人简历亮点。 通过以上步骤循序渐进地构建起坚实的技术栈之后,再考虑向特定方向深化发展,例如专注于 BI 解决方案实施或者是投身 AI 领域成为未来可能的产品经理角色之一[^3]。 ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression # 示例代码展示如何加载数据并训练简单线性回归模型 data = {'X': [i for i in range(10)], 'Y': [(2*i + 1) for i in range(10)]} df = pd.DataFrame(data) X_train, X_test, y_train, y_test = train_test_split(df[['X']], df['Y'], test_size=0.2, random_state=42) model = LinearRegression() model.fit(X_train, y_train) print(f"Coefficients: {model.coef_}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值