微信公众号【程序员江湖】
作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条、网易、滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验、求职心得和成长感悟,以及作为程序员的思考和见解。(关注公众号后回复”资料“即可领取 3T 免费技术学习资源)
前几天我发了一篇文章从零基础到拿到网易Java实习offer,我做对了哪些事,这篇文章介绍了我准备2017年春招实习的历程。但是呢,里面没有很详细的面筋,很多读者觉得不过瘾,于是笔者从尘封多年的帖子中找到了我当年记录的面经,在这里分享给各位看官哈。
壹
此生与你,江湖相逢
阿里巴巴 春招实习 电话面试
一面
那一年春天,大概是3月份左右,兴致勃勃地投了阿里的Java实习岗位,没有内推,走的是正式流程,结果面试却来的比想象中早一些。
当时是在阿里招聘官网上直接参加视频面试,第一次面阿里,当时还是挺紧张的。
一面面试官问的问题比想象中要简单,一起来看看都有什么题目吧。
1 项目
当时我没有什么拿得出的项目,一个是学校的实训项目,一个简单的Java Web应用。另一个则是我在大四暑假水来的实习项目。总体来说没啥亮点。
2 项目中的问题
面试官显然对这些项目没啥兴趣,所以没问几个问题就跳过了。
3 Java三大特性
4 Jvm虚拟机 内存结构、算法、垃圾回收
当时已经看过了《深入理解JVM》所以这些问题基本都回答上来了。
5 集合类 链表和数组的区别 map和set的区别
主要考察对集合类源码的理解,那个时候理解的还不深,但是这些都是面试常见考点,我靠着刷面经也基本都答上来了。所以建议大家要多看看集合类的源码,后来我在秋招的时候就避免了这一问题。
6 二分查找代码
7 mysql相关的问题
8 spring
9 前后端数据交互
10 网络、操作系统
后面这些问题记不大清了,但是都问的比较基础,基本上就是刷过面经就能搞定的程度,当时对数据库的索引没有答好。
后续:
一面之后马上来了二面,二面面试官问了一个问题就让我等结果,并且告诉我他们的部门是阿里云。
本来我还以为这是过了的意思,后来一个HR问我一周内能不能到岗,我说大概要两周,结果。。。结果居然就没有下文了。
到现在我都不知道这个HR是不是因为时间问题而拒绝了我。于是我就这样第一次和阿里擦肩而过。(第二年春招实习我又和阿里擦肩而过,不过那一次是我主动放弃的)
所以告诫大家,如果真的是很想去的公司,一定要做好随时打包上班的准备,不要重蹈我的覆辙。
腾讯 春招实习 电话面试
一面挂
很兴奋地参加了腾讯的春招实习生面试,当时对腾讯的后台开发岗位还没啥了解,事业群也没选。然后妥妥地一面挂了。
1 http的数据包格式
2 tcp包含ip么
3 tcp的数据包格式
腾讯确实很喜欢考计算机网络,我当时对这块基本没准备,挂的很彻底。
4、mysql数据库连接池的驱动参数
5、数据库连接池如何防止失效
6、部署项目时tomcat 的参数
问的角度有点刁钻,当时没答上来,感觉有点劝退的意思。
7 热加载的原理
8 mybatis的#和$号区别
9 java的jdk源码
10 hashmap的iterator读取时是否会读到另一个线程put的数据
这个是不会的,迭代器在迭代时如果集合类插入新元素,modcount会变化,此时迭代器的迭代过程应该会失败退出。
11 Linux的显示文件夹大小 ls -al
12 Linux的查看端口状态 natstat加参数
13 linux的查看进程的启动时间 linux ps
好吧,这就是腾讯第二喜欢的操作系统和Linux。
腾讯 日常实习生 电话面试
一面挂
当时我已经去了网易游戏实习,某天在杭州逛该的时候,接到了腾讯的面试电话,于是我就在商场里完成了这次面试。当时是CDG部门面的我,尴尬的是当时我不知道这个事业群,导致我重复问了面试官好几遍才确认:好吧,我没听说这个事业群。
简单说一下面试题吧:
1 自我介绍
2 项目
3 java的堆和栈
4 内存泄漏发生在哪
5 设计模式 工厂模式 单例模式 举例子
6 mysql数据库 实现层级树形结构 引擎 索引 查询优化 多方面
这些面试题跟之前面试遇到的没有太大区别,但是答得并不是很好,因为我那时候对有些知识点的理解还是停留在表面,所以时间一长马上就忘了。这方面不知道各位有没有同感。
7 微信红包的设计 开发 注意 用户数据的统计 项目相关
不是很常见的面试问题,主要考察系统设计方面的知识,没答好。这道题网上也可以找到答案,一些常见的系统设计场景题例如:秒杀系统,直播系统,大家平时也可以稍微了解一下。
滴滴 日常实习生 电话面试
一面挂
1项目ssm
2mybatis与hibernate比较
3快排和冒泡
4hadoop redis
这个当时还不会,连基本概念都不晓得。后来才开始慢慢重视这方面的学习
5 Linux 显示文件属性 杀死进程 找出出现次数最多的ip linux指令
打扰了,对Linux命令极为不熟悉,建议后端同学重视这方面内容的积累。
6 sql中唯一索引的使用
索引字段若相同则更新,不同则插入。
7 hashmap的线程安全,性质
8 多线程的使用
9 同步解决线程安全但带来低效率问题。
10 map reduce过程
11 spring的几个特性
12 aop事务的隔离级别和传播特性
默认隔离级别: ISOLATION_DEFAULT
感觉答的还可以,但是没有回音,有点奇怪。
网易游戏(offer)电话面试
一面:
1 项目内容
2 数据库设计
3 项目中并发使用,部署情况,测试情况
4 系统页面读取不一致,使用异常或者警告。
5 项目中的上传功能
面试官对项目考察的挺多,好在我事先准备的比较充分,基本都打了上来。
6 final finalize finally的用法和区别
7 hashmap原理
8 static作用域
9 大型系统的架构:高可用,高性能,伸缩性,扩展性。
刚好之前看了《大型网站技术架构》这本书,把后端架构的基础理论搞懂了一些,所以面试官问起来也能比较好地回答。
10 算法 二维数组求最大图形面积
11 SQL语句 查找
12 spring的核心原理:ioc aop di
ioc:控制反转,松耦合,自动完成依赖注入。
注入方式:构造器,setter,接口。
实话说,当时对这块内容理解不深,主要靠刷面经来学习知识点
13 hashmap线程安全 stringbuffer 和 stringbuilder.
二面:
1 项目经验
2 简历内容确认
3 两个智力题
甲有一个王和另一张牌,乙有两张牌,问甲拥有两张王的概率和乙拥有两张王的概率
概率问题,不会做
一个圆桌,两人放棋子,谁没地方放旗子谁输,问有没有必胜办法。
先手放在圆桌中心则必胜
如果你是Java方向的同学,那么我打算向你安利我的另一个微信公众号【Java技术江湖】这是一位阿里Java工程师的技术小站,致力于分享Java后端技术文章,以及这几年学习Java的心得体会,偶尔也记录在阿里成长的点滴,和大家一起在Java学习道路上成长。
360 春招实习 电话面试
一面
1 volatile 原理 使用 指令重排 内存屏障 保证内存可见性
2 项目
3 Java的特性 抽象类和接口区别
4 aop切面的功能 和继承的关系
二面:
1 Java的内存模型
2 Java gc 算法 垃圾收集器 分代 分区 参数配置
Java程序运行时与内存模型的关系,堆中有实例,永久代保存类的信息,加载类后自动初始化静态内容,然后虚拟机栈进行操作,对象引用指向堆中的实例,实例需要调用对应方法。
4 左移有序数组的二分查找
5 volatile的实现
6 cas操作的实现
底层硬件支持,cas为一条机器码指令
7 synchronize关键字的使用
8 lock的原理和实现,lock和synchronized的区别
9 写一个电梯需要用到的类和方法
一道面向对象设计问题,常见的题目我还见过“写一个地铁需要用到的类”、“写一个饭店要用到的类”
10 Java8新特性
明年你们可能要掌握Java9的新特性了吧
HR面挂:
1、自我介绍
2、项目的背景
3、实习遇到的困难和感受
HR面试开始时还跑去接了个电话。
问了不到10分钟的问题,问题还都是围绕实习经历的。
实习经历问完了直接说今天面试就到这里了。
她回复是挂在第三面,理由是问题理解不够深入。当时我就懵逼了,第一次被HR挂。
所以就算是HR面,大家也要好好准备,要不然就太可惜了。
贰
此生与你,江湖相逢
京东 日常实习生
一面挂
1 mysql行级锁表级锁,sql语句写select * 时如何加行级索
2 项目中的上传功能。
3 sql优化方式
4 xss攻击
5 线程安全的实现方式
面试官也挺奇葩,让我自己打电话找他面试,然后说话快得我听不清,问问题感觉也是比较随意,没下文了。
搜狐(offer) 日常实习生
一面
1 hashmap
2 说一个集合类
3 说说java特性
4 说说js
5 说说jquery
6 项目
7 sql
这个面试明显很水了,一个女面试官,面了十分钟就说通过了。
所以有时候不要觉得实习面试过了就很开心,也要根据面试难度来评估对方公司和部分做的事情是否对你有帮助,否则过去之后可能就是完全在打杂,得不偿失。
美团点评(offer) 春招实习
一面
1 Java ArrayList如何排序
2 hashmap原理、冲突处理、优化
3 mysql索引使用
4 Java并发包的内容
5 Java方法栈的作用
6 分布式、soa、锁
那时候对这方面还不太清楚,答得比较水。
7 两个栈实现一个队列
8 n个人中挑选m个人
9 平时看什么书
10 spring的 ioc和aop
11 Java8新特性
12 负载均衡方式
随机、轮询、加群轮询、一致性哈希
二面
1 mysql引擎
2 项目难题
3 jvm优化,博客内容
当时博客写的还不太多,没什么拿得出手的内容,博客这种东西需要花时间积累,建议各位也写一些。
4 设计模式中的观察者模式,聚合和组合,组合和继承
5 hashmap优化
6 redis,分布式
二面答得不太好。
不过当天发了offer,没有HR面
CVTE(offer)春招实习
一面
1 数据库设计
2 冗余
3 范式
4 反范式
比较少见的问题,但是不难,范式用于减少数据冗余,反范式则可以避免多表连接。
5 索引优缺点
6 索引实现
7 mysql引擎行级锁表级锁
8 数组中找到第k大的数。
剑指offer原题,不过我当时只想到了先快排再找第k大的数。实际上在快排过程中就可以找到第k大的数了。
二面
1 数据库设计
2 闲聊
hr面
面试官一对二面试,问了半个小时,听说挂人很多,不过最后我们两个一起面试的都通过了。
蘑菇街(offer)春招实习
一面
1 JAVA的jvm:内存模型、分代的介绍、每个代的操作,gc算法。
2 类加载器、双亲委派模型、双亲实现,反双亲设计,类隔离。
这部分问的很深了,特别是最后两个问题,把我问懵了。当时面的应该是基础架构部门,所以做的技术偏底层,问题都比较有深度。
3 hashmap实现、concurrenthashmap实现。
4 volatile实现,锁分类介绍、AQS介绍、公平锁非公平锁介绍。
当时压根不懂AQS,对于锁的几种类型也不够熟悉(互斥锁,轻量级锁,偏向锁)。这部分内容强烈建议看《Java并发编程艺术》以及《深入理解JVM虚拟机进行学习》
5 并发、并发中的threadlocal原理。
6 tomcat介绍
7 三个任务,每个任务id都为long类型,如何用一个long来表示三个任务都已完成,要求不能用countdownlauch。
答案是:使用三个id相&,若为0则完成否则不完成。(位运算性质)
8 NIO和BIO的区别
当时对NIO和BIO的底层原理不了解,只会回答很浅显的区别,实际上需要更加深入去分析,BIO的本质是基于阻塞IO的socket完成通信,而NIO是基于IO多路复用来实现的,在Linux上的底层实现就是epoll。
9 Spring的AOP和IOC
10 使用一个数组实现map,可以用i存key,i+1存value。
11 使用一个数组实现一个链表,i存自己下标,i+1存下一个结点下标,i+2存值。面试官要求使用移位操作。没答上,转而提问了问题7.
二面
很水,问项目,问学习经验,问一些有的没的。
看什么书,学过哪些技术。
HR面:
已面完,问了半个小时问题,感觉还可以啦。
现在回想起来,当时蘑菇街和美团的offer也是不错的,不过因为笔者一对网易游戏有情怀,最后还是选择了它。
至此,我们找实习之旅也到了尾声。以上就是我全部的实习面经了,不知道大家看的过不过瘾呢。
如果你也有面经想要和大家分享,那不妨来找作者投稿吧。每一段找实习或者找工作的经历都是各不相同的,相信你的那一段经历也值得收藏。