21届非科班后台实习总结(四战百度、三战字节)
背景:坐标西安某所双非本科,非科班,正式学习Java是在19年3月,每周的周末两天和周内晚上会进行学习。在暑假进行了整体的复习并且做项目熟悉框架(充实简历),并在9月非常有幸找到国内某Top3互联网公司实习,后来由于学校原因无法继续实习,回学校后就有一点堕落,每天无所事事,就想着再投投简历,查漏补缺。(知道自己菜,大佬勿喷)
回来后面的公司有 小米、网易、快手、百度、头条、阿里云、阿里云外包子公司、京东数科、深信服
面试情况(基本全是后端,别的岗位会标出):
- 小米:一面挺好,几乎全答出来,算法也是不到一分钟就秒了,可是后面没消息了(???)
- 网易:面试测开岗,面试官说面的挺好的,后面想了想还是拒了(没有歧视测开,个人方向不匹配而已)
- 快手:第一次面效率工程,一面+二面2个小时,已经oc,但是因为实习时间原因就把我鸽了,第二次是商业化,面试体验极差,面试官就没有跟我好好沟通,随便问了问,出了个leetcode hard就把我刷了
- 百度:第一次是没有准备好,问的挺基础;第二次面试官把我当校招问,问完了说可能问的有点深(他们组不要实习生);第三次面测开,没有问技术,随便聊了40分钟,面试官觉得我不适合就凉了;第四次终于挺到了二面,二面面完后面试官问你能不能长期实习,我们组刚走了个实习生,才一个月多,我说可能不行(之前实习被叫回过),凉
- 头条:第一次是九月官网投递,笔试被刷;回来后第二次投递,也是没有准备好,问的一脸懵逼;第三次面完后面试官问我有没有时间二面然后又看了下时间说下午跟你安排二面(当时已经12点多),过了几天后收到一封感谢信??wtf
- 阿里外包:面试挺水的,一面二面加起来都没有30min
- 京东数科:发offer,当时和hr沟通能不能晚去两天,hr一副高高在上的样子,就拒了
- 深信服:二面面试官没有问太多技术(可能是技术栈不匹配,我投的python),就聊了聊学校的事情,最后我就问了下我能不能年前入职,面试官说马上放假了,年后再联系把(可能稳了),面试官说了加班很严重
总结:刚开始的时候确实是自己基础不扎实,导致百度和头条都没有过,但是后面凉几乎都是实习时间的原因,由于之前实习被抓过,后面也不想跟面试官画饼(性格原因吧),然后就好几家公司都说不行,实习三个月可真是难找到实习,写这篇是为了给自己进行一个复盘,希望自己砥砺前行、不忘初心,在今年春招实习和秋招能够给自己取得一份满意的offer,下面会附上面经。
百度:
20min
1.自我介绍
2.Java中的八大类型及其包装类型(占用字节数)
3.说一下Map的各种实现类,它们有什么区别
4.HashMap底层实现
5.Spring中的Bean生命周期,Spring初始化过程
6.数据库中的组合索引,数据库优化有了解过吗
7.快排,时间空间复杂度
8.Servlet是单线程还是多线程的,线程安全吗
9.有什么要问我的
2.Java中的八大类型及其包装类型(占用字节数)
3.说一下Map的各种实现类,它们有什么区别
4.HashMap底层实现
5.Spring中的Bean生命周期,Spring初始化过程
6.数据库中的组合索引,数据库优化有了解过吗
7.快排,时间空间复杂度
8.Servlet是单线程还是多线程的,线程安全吗
9.有什么要问我的
55min
1.实习经历,实习时的项目功能、职责(20min)
2.项目介绍,redis和mysql是如何保证数据同步性的
3.rabbitmq是如何保证可靠的,kafka适用于什么场景(分布式日志...)
4.springboot的优势、介绍一下springboot
5.orm有了解过Springdata吗,如何把mybatis里的xml迁移到springboot
6.redis的作用、实用场景
7.说一下微服务,docker的优点,docker中的端口映射问题
8.静态内部类和非静态内部类,内部类为什么可以访问到它外部类的数据和方法?
9.lambda表达式在jvm里是如何体现的
10.hash冲突了解哪些?说一下hashmap里的hash冲突,红黑树的定义,put一个元素到红黑树里红黑树的转变过程
11.正向***、反向***,nginx有了解过吗
12.android里的handler了解吗
13.zookeeper、springcloud知道吗,你的项目有没有使用多台机器
14.还有什么想问我的
2.项目介绍,redis和mysql是如何保证数据同步性的
3.rabbitmq是如何保证可靠的,kafka适用于什么场景(分布式日志...)
4.springboot的优势、介绍一下springboot
5.orm有了解过Springdata吗,如何把mybatis里的xml迁移到springboot
6.redis的作用、实用场景
7.说一下微服务,docker的优点,docker中的端口映射问题
8.静态内部类和非静态内部类,内部类为什么可以访问到它外部类的数据和方法?
9.lambda表达式在jvm里是如何体现的
10.hash冲突了解哪些?说一下hashmap里的hash冲突,红黑树的定义,put一个元素到红黑树里红黑树的转变过程
11.正向***、反向***,nginx有了解过吗
12.android里的handler了解吗
13.zookeeper、springcloud知道吗,你的项目有没有使用多台机器
14.还有什么想问我的
50min
1.自我介绍
2.实习时的项目职责
3.算法:找到两个链表的交点,快排
你觉得你在哪个方面了解的最多?(服务器,数据库,计网,操作系统) 数据库
4.MyISAM应用场景,什么引擎支持事务?
5.如果我的系统很慢,从数据库方面怎么优化?
6.慢查询日志怎么来的?让你设置个慢查询日志呢?
7.linux中常用命令,如果查一个目录下文件中包含“xxxx”的个数,命令是什么?
8.平时命令怎么查?让没事多看看help。
9.负载均衡说一下,nginx的负载均衡策略
10.Java中的多线程?会造成什么问题?
11.对语言排斥吗?为什么?
12.rabbitmq中的队列是什么形式?
13.rabbitmq工作流程
14.tomcat的工作流程,tomcat原理
15.redis集群时,如果主机宕掉怎么办?应用场景
16.redis分片了解吗
17.什么是生产者消费者模式,举个场景
京东数科:
扯了会实习经历,介绍了下实习期间的职责 38min
1.自我介绍
2.栈、堆和方法区的介绍
3.Java中的内存溢出介绍一下
3.线程池的五种状态,结合例子说明在什么情况下或使用什么方法进入什么状态
4.http请求
5.tcp如何保证可靠性(重传机制和滑动窗口)
6.Linux中的五个主要命令
7.Java中的IO是如何实现异步的
8.synchronized关键字
9.JavaScript是单线程还是多线程,如何保证异步
10.域
11.ping使用什么协议
12.git了解吗,它有几个仓库,介绍一下
13.你有什么想问我的
1.自我介绍
2.栈、堆和方法区的介绍
3.Java中的内存溢出介绍一下
3.线程池的五种状态,结合例子说明在什么情况下或使用什么方法进入什么状态
4.http请求
5.tcp如何保证可靠性(重传机制和滑动窗口)
6.Linux中的五个主要命令
7.Java中的IO是如何实现异步的
8.synchronized关键字
9.JavaScript是单线程还是多线程,如何保证异步
10.域
11.ping使用什么协议
12.git了解吗,它有几个仓库,介绍一下
13.你有什么想问我的
快手:
55min 一面
1.实习经历,职责
2.介绍项目
3.Spring、SpringMVC、SpringBoot的区别
4.集合 HashMap、ConcurrentHashMap,如何使HashMap变得安全
5.数据库的索引有几种,分别说一下
6.编程:设计一个栈,push、pop、getMax,都为O(1)
7.java中的error和exception
8.java类加载机制,.class文件如何执行
9.JVM分区
10.抽象类和接口的区别
11.SpringMVC工作流程
12.SpringIOC和AOP的底层实现
13.MySQL事务、隔离级别
14.重载和重写
15.写一个线程安全的单例模式
16.你有什么想问我的
1.实习经历,职责
2.介绍项目
3.Spring、SpringMVC、SpringBoot的区别
4.集合 HashMap、ConcurrentHashMap,如何使HashMap变得安全
5.数据库的索引有几种,分别说一下
6.编程:设计一个栈,push、pop、getMax,都为O(1)
7.java中的error和exception
8.java类加载机制,.class文件如何执行
9.JVM分区
10.抽象类和接口的区别
11.SpringMVC工作流程
12.SpringIOC和AOP的底层实现
13.MySQL事务、隔离级别
14.重载和重写
15.写一个线程安全的单例模式
16.你有什么想问我的
45min 二面
1.自我介绍
2.实习时的项目功能、职责
3.自己项目的介绍、框架图画一下、哪里有问题需要改善,有没有想过怎么改善
4.redis的持久化机制,五种结构的应用场景,过期策略
5.mysql常用的引擎,它们的区别,索引,
6.Java异常体系(没说好,懵了)
7.排序算法了解哪些,说一下思想
8.编程:快排,合并两个有序链表
9.Spring的好处在哪?你最喜欢它哪里
10.Java中的集合,Map,说一下它们分别的应用场景
11.set是有序的,这句话对吗?
12.抽象类中可以有实现方法吗,它和普通方法的区别
13.说一下java中的反射
14.现在有哪些实习offer,最想去哪个
15.拿的奖挑两个介绍一下
15.你有什么想问我的
网易(测开):
68min
1.实习时的项目功能
2.原生Monkey是如何实现的,你们的Monkey能够获取什么
3.自己的项目架构,如何使用jmeter进行压测,压测主要是出于什么目的
4.自我介绍
5.redis数据结构及过期清除策略(惰性和定期),为什么不使用redis的队列作为传送秒杀消息的中间件
6.rabbitmq与kafka的对比,针对你说的kafka会有较低几率重发消息有验证过吗
7.算法:给定字符串s1=aboo,s2=awiedobao 判断s2是否包含s1(用例返回true),能否再优化?提示使用滑动窗口
8.写查询,mysql查找一个表中重复列值的个数,join查询会写吗
9.你写过最长的查询是什么,项目中有没有涉及到复杂查询
10.你说你对数据库设计有自己的理解,可以举个实例吗,为什么要这样设计
11.怼索引,mysql有几种索引,分别是什么,在什么场景下使用
12.知道mysql中的锁吗,说一下表锁,行锁,如何上锁(for update),举个例子在什么时候事务会进入阻塞状态
13.在Java中如何使用事务,回答Spring中使用注解,提示不对,没想出来
14.docker是什么,有实际应用过吗(讲了下docker是基于OO思想,仅了解)
15.给实例,让设计用例,给一个接口如何测试它的QPS,你的秒杀接口返回的状态码有哪些?
16.有没有想过缓存某一刻失效,而此时有大量请求数据库是否会崩,崩了后如何恢复,有试过提升你的数据库瓶颈吗
16.你还有什么想问的
小米:
1.实习时的项目功能
2.原生Monkey是如何实现的,你们的Monkey能够获取什么
3.自己的项目架构,如何使用jmeter进行压测,压测主要是出于什么目的
4.自我介绍
5.redis数据结构及过期清除策略(惰性和定期),为什么不使用redis的队列作为传送秒杀消息的中间件
6.rabbitmq与kafka的对比,针对你说的kafka会有较低几率重发消息有验证过吗
7.算法:给定字符串s1=aboo,s2=awiedobao 判断s2是否包含s1(用例返回true),能否再优化?提示使用滑动窗口
8.写查询,mysql查找一个表中重复列值的个数,join查询会写吗
9.你写过最长的查询是什么,项目中有没有涉及到复杂查询
10.你说你对数据库设计有自己的理解,可以举个实例吗,为什么要这样设计
11.怼索引,mysql有几种索引,分别是什么,在什么场景下使用
12.知道mysql中的锁吗,说一下表锁,行锁,如何上锁(for update),举个例子在什么时候事务会进入阻塞状态
13.在Java中如何使用事务,回答Spring中使用注解,提示不对,没想出来
14.docker是什么,有实际应用过吗(讲了下docker是基于OO思想,仅了解)
15.给实例,让设计用例,给一个接口如何测试它的QPS,你的秒杀接口返回的状态码有哪些?
16.有没有想过缓存某一刻失效,而此时有大量请求数据库是否会崩,崩了后如何恢复,有试过提升你的数据库瓶颈吗
16.你还有什么想问的
55min
1.自我介绍
2.项目介绍
3.登陆是怎么实现的?客户端加密和数据库加密的详情,现场设计一个忘记密码的功能
4.redis的五种数据结构
5.HashMap底层实现,什么时候会转换为树、链表,put原理
6.线程池的参数,如果我初始化core为5,我有6个线程,此时怎么办
7.rabbitmq与kafka的区别
8.SpringIoC及底层实现原理,如果我的Bean里定义controller(忘了),Spring是线程安全的吗,高并发时会出现什么情况,Bean的生命周期
9.mybatis的执行原理,mybatis中的接口方法可以实现重载吗
9.SpringMVC执行流程
10.Mysql的组合索引,最左匹配准则,什么时候索引会失效,底层原理(B+树),说了下B+树和B树的区别
11.http请求是基于什么协议,tcp/ip协议,具体是哪个(TCP),场景:当我打开一个浏览器时就会建立连接,有什么方法能让我不建立这个链接
12.linux中你使用过的命令,如果我有一个成万级日志文件,我想查找某一天的日志,怎么查
13.给定一个无序数组和k,找出它的第k大(a.先排序 b.浪费空间换时间)
14.给定一个有序数组和k,将前k段和后k段进行逆序(1,2,3,4,5,6)->(5,6,1,2,3,4)
15.给定一个无序数组,找出它的和最大,要求不能出现两个连续的相加(dp,直接放弃)
16.你有什么想问我的
1.自我介绍
2.项目介绍
3.登陆是怎么实现的?客户端加密和数据库加密的详情,现场设计一个忘记密码的功能
4.redis的五种数据结构
5.HashMap底层实现,什么时候会转换为树、链表,put原理
6.线程池的参数,如果我初始化core为5,我有6个线程,此时怎么办
7.rabbitmq与kafka的区别
8.SpringIoC及底层实现原理,如果我的Bean里定义controller(忘了),Spring是线程安全的吗,高并发时会出现什么情况,Bean的生命周期
9.mybatis的执行原理,mybatis中的接口方法可以实现重载吗
9.SpringMVC执行流程
10.Mysql的组合索引,最左匹配准则,什么时候索引会失效,底层原理(B+树),说了下B+树和B树的区别
11.http请求是基于什么协议,tcp/ip协议,具体是哪个(TCP),场景:当我打开一个浏览器时就会建立连接,有什么方法能让我不建立这个链接
12.linux中你使用过的命令,如果我有一个成万级日志文件,我想查找某一天的日志,怎么查
13.给定一个无序数组和k,找出它的第k大(a.先排序 b.浪费空间换时间)
14.给定一个有序数组和k,将前k段和后k段进行逆序(1,2,3,4,5,6)->(5,6,1,2,3,4)
15.给定一个无序数组,找出它的和最大,要求不能出现两个连续的相加(dp,直接放弃)
16.你有什么想问我的
字节:
40min
1.在浏览器输入一个地址,背后的运行过程(协议TCP/IP,从应用层网络传输到物理层)
2.三次握手,四次挥手
3.两个有序数组合并成一个有序数组<多个有序数组呢?>
5.快排
6.数据库 区别SQL server /MySQL
7.常用的引擎,数据库引擎的区别 事务+锁
8.数据结构算法
9.项目,手写一个表
10.聊聊秒杀吧,对秒杀的理解,秒杀系统实现,具体实现,存在问题
11.java的.class加载机制,java到class到二进制字节码文件的转化过程
12.jvm的作用
13.Linux常见指令
70min
1.自我介绍
2.实习经历、职责 快30min
3.项目介绍
4.算法,url倒置,www.toutiao.p/hello/index.com -->com.index/hello/p.toutiao.www
5.算法,二叉树镜像反转(非递归)
6.第几次面头条?觉得前面失败在哪?觉得这次准备的怎么样?
7.说一下HashMap,是安全的吗?你理解的线程安全是什么?如果我想用一个线程安全的map应该使用哪个?
8.ConcurrentHashMap原理,如何保证线程安全的
9.内存泄漏知道吗?说一下内存泄漏会导致什么?
10.Tcp三次、四次过程,可以是两次吗?挥手三次可以吗??
11.http协议知道吗?1.0和1.1的区别在哪?http请求都有什么?
12.LRU知道吗?
13.如果让你一个人开发一个工具,你觉得可以吗?你觉得你需要什么?团队还是技术?
14.还有什么想问我的
#小米##网易##快手##百度##实习##Java工程师##面经#1.在浏览器输入一个地址,背后的运行过程(协议TCP/IP,从应用层网络传输到物理层)
2.三次握手,四次挥手
3.两个有序数组合并成一个有序数组<多个有序数组呢?>
5.快排
6.数据库 区别SQL server /MySQL
7.常用的引擎,数据库引擎的区别 事务+锁
8.数据结构算法
9.项目,手写一个表
10.聊聊秒杀吧,对秒杀的理解,秒杀系统实现,具体实现,存在问题
11.java的.class加载机制,java到class到二进制字节码文件的转化过程
12.jvm的作用
13.Linux常见指令
70min
1.自我介绍
2.实习经历、职责 快30min
3.项目介绍
4.算法,url倒置,www.toutiao.p/hello/index.com -->com.index/hello/p.toutiao.www
5.算法,二叉树镜像反转(非递归)
6.第几次面头条?觉得前面失败在哪?觉得这次准备的怎么样?
7.说一下HashMap,是安全的吗?你理解的线程安全是什么?如果我想用一个线程安全的map应该使用哪个?
8.ConcurrentHashMap原理,如何保证线程安全的
9.内存泄漏知道吗?说一下内存泄漏会导致什么?
10.Tcp三次、四次过程,可以是两次吗?挥手三次可以吗??
11.http协议知道吗?1.0和1.1的区别在哪?http请求都有什么?
12.LRU知道吗?
13.如果让你一个人开发一个工具,你觉得可以吗?你觉得你需要什么?团队还是技术?
14.还有什么想问我的