非科班水硕的春招实习总结- Java 后台开发

前言

这篇文章主要是记录我春招实习的经历(碎碎念),只是希望能对别人起到一点点的帮助吧。没拿到什么大厂的 offer,不敢在各位大佬面前献丑。

背景介绍

lz 本科通信,硕士电子,读研以来先后搞过一段时间的嵌入式和机器学习,后来由于一些原因都没继续搞下去了,直到去年暑假开始接触 Java,接着又阴差阳错的去了南京一家外企打了 2 个多月的杂(Python 数据清洗),直到部门 leader 离职创业,我便也辞职了。在这实习期间,跟着视频学完了 Java 的基础知识和部分 servlet 知识,回到学校后又摸鱼了一段时间,直到 12 月份开始准备春招实习,lz 先是看了下之前的实习面经,发现重复的考点确实挺多的,遂开始了面向的面经复习策略,复习了操作系统,计网,Java 集合类,虚拟机等方面常考的知识。事实证明这样还是不足以抵挡住面试官的攻势,还需要根据知识点更深层次的学习,完善自己的知识体系。就这样搞完基础知识的复习,过完年上来就到了 2 月中下旬,然后跟着视频做了牛客网的中级项目课,以填充简历。接着就在 3 月中旬开始投递简历,各个平台(牛客网,实习僧,拉钩网,boss 直聘,高校论坛)估计加起来有 100 多家吧,最终艰难上岸,收获了厦门一个小公司的 offer。

资料分享

由于 lz 的学习路线不是很合理以及学习成效并不好,就不瞎指导了,再加上之前逛牛客比较多,便收藏了一波好帖子,为方便牛油查找,遂将链接放在下面自取(侵删)。

Java 面经

Java 书单

Java 学习资料

建议贴

面试情况

阿里新商场(模拟面试)

个人情况

  • 个人情况
  • 自我介绍
  • 你为什么学 Java ?
  • 你的计算机专业基础课是怎么学习的?和计算机科班的比较,你觉得你学的比他们更深还是说差不多?

Java 基础

  • Java 的八种基本数据类型,每个占多少个字节?
  • Java 中抽象类和接口的区别?
  • Java 的三大特性
  • 排序算法
  • 讲一下快排的思想
  • 在最好的情况下快排的时间复杂度是多少呢?
  • 快排是如何选择切分元素的?

操作系统

  • 说一下线程和进程,它们之间的区别
  • 线程同步的机制
  • 同步和异步的区别
  • 阻塞和非阻塞的区别
  • 操作系统中死锁的四个必要条件

Java 集合类

  • ArrayList 初始化时数组的默认长度是多少?
  • ArrayList 扩容是扩容多少倍?扩容后是用原来的数组还是新的数组?
  • ArrayList 是一个线程安全的集合类吗?
  • 判断一个集合类是否为线程安全的机制是什么?
  • 说一下 Fail-Fast 机制,结合源码说一下(如果可以的话)
  • ArrayList 和 LinkedList 的使用场景
  • 说一下 HashMap 的底层数据结构
  • 说一下 HashMap 的存储逻辑(put() 函数)
  • HashMap 存储元素时 key 完全一样该怎么处理?
  • HashMap 的默认长度是多少?扩容是扩成几倍?
  • 若两个 key 的 hashcode 值相同但 equals 不同,也就是说它们会插入到同一个桶里,新添加的节点是插入到已有元素的前面还是后面?
  • 为什么 JDK 1.7 是头插法,JDK 1.8 是尾插法?
  • JDK 1.8 的 HashMap 是否线程安全?
  • 既然 HashMap 不是线程安全的类,有啥办法解决这个问题?
  • ConcurrentHashMap 和 HashMap 的区别?为什么 ConcurrentHashMap 会线程安全?
  • ConcurrentHashMap 虽然是线程安全的,但它也存在什么问题?
  • 了解 TreeMap 吗?TreeMap 最大的特点是什么?为什么已经有了 HashMap 了还要有 TreeMap 类?
  • 说一下红黑树的特点
  • 你知道 Http 状态码?302 是代表啥意思?502 是代表啥意思?

线程池

  • Java 中多线程有哪几种实现方式?
  • 线程池了解吗?说一下为什么要有线程池?
  • 说一下线程池核心的几个参数

JVM

  • 说一下 JVM 的垃圾回收器 CMS G1
  • 说一下 CMS 的优缺点
  • 回收的机制是什么?凭什么判断一个对象会被回收?
  • 说一下 GC Roots 包含哪些内容?
  • 什么情况下会发生新生代 gc?
  • Eden 区满了之后会怎么样呢?说一下这个处理流程
  • Eden 区 和 From Survivor 区中经过 gc 后还能存活的对象移动到 To Survivor 区后,那第二次 GC 时是取 Eden 区和 From Survivor 进行 gc 还是说取 Eden 区和 To Survivor 区?

项目

  • Redis 和 数据库是怎么保持一致性的?
  • Spring 和 SpringBoot 的区别?
  • 说一下 Spring IOC 和 AOP
  • 说一下 bean 的四个注解,可以让对象注入的注解
  • 说一下你这个项目是根据什么来做的
  • 看你项目中用 Redis 中的 List 来实现异步队列,说一下具体是怎么做的?是如何基于 Redis 来实现异步的?有没有一个拉取消息的过程?还是说基于 Redis 你就把它放到队列里,然后有人来处理还是说订阅处理

腾讯

一面(PCG)

  • ThreadLocal 类的底层实现是怎么实现的?使用场景
  • 保存用户信息是一个线程保存一份还是说一个数据结构保存一份?
  • 那这个线程的生命周期?什么时候启动线程,什么时候结束线程?
  • 一旦登录了这个线程一直会存在,退出了之后线程才会销毁吗?
  • 你这个服务是分布式还是单机的?
  • 在单机环境下一个进程可以开启多少个线程?同时能支持多少个用户登录?
  • 进程和线程之间的关系?
  • Java 是单线程的还是单进程的?
  • Redis 有哪些数据结构?
  • list 如何实现的异步消息队列?
  • Redis 在单线程下实现高并发的?核心的机制是什么?
  • IO 多路复用模型有哪些?
  • select 和 epoll 有什么区别?

QQ 看点部门

  • 自我介绍
  • 介绍一下头条资讯项目
  • 你刚才说内容是你自己添加的内容,那你添加的内容有多少?
  • 登陆注册功能的话是可以通过 QQ/微信 登陆,还是说自己实现的登陆方式?
  • 这个刷图片的时候有一些推荐算法在里面吗?
  • 新闻是按什么排序的?
  • 站内信具体是一个什么功能呢?
  • 站内信的消息的收发,展示完全是你自己写的是吧?
  • 一次请求多久时间可以返回?
  • feed 流中刷新一次会出来几篇文章?这几篇文章是动态出来的吗?这几篇文章出来的耗时是多少?
  • 介绍下 Kaggle 比赛的这个项目
  • 这个项目的训练数据哪里来的?
  • 介绍一下逻辑回归模型吧
  • 了解线性回归吗?
  • 说一下这个 Scikit-Learn 库吧
  • 介绍下 Redis 的基本数据结构
  • 说一下这 5 种数据结构的底层实现
  • 说一下你看过的 Redis 源码
  • Redis 的哪种数据类型用到了跳表结构?

滴滴

京东数科

  • 自我介绍
  • 说一下 Java 里面的数据结构
  • 说一下 ArrayList 和 LinkedList 的区别
  • 说一下 ArrayList 的底层
  • ArrayList 是线程安全的吗? 怎么解决 ArrayList 线程不安全的问题
  • 在 Java 中如何实现一个线程?
  • 设计模式了解吗?
  • 说一下什么是设计模式
  • 说一下单例模式及其应用场景
  • 了解哪些数据库?
  • 说一下 Redis
  • Redis 是数据库吗?
  • 如何优化查询性能?
  • 如果是全表扫描,如何优化?
  • 一般看哪些博客或者逛哪些网站?

追一科技

  • 自我介绍
  • 头条资讯项目有没有前端和后端,前后端是怎么交互的,交互时有没有做权限的管控?
  • 网关, http 前后端交互的加密的协议,数据层面的协议有没有了解过?
  • Spring Boot 和 Spring MVC 有什么区别?
  • 说一下 SpringMVC 的执行流程
  • SpringMVC 中用到了哪个核心的 Servlet ?
  • Spring 里面有哪些核心的特性?
  • Spring 注入的方式有哪些?
  • Spring 的 scope 里面有哪几个属性?
  • 说一下 HashMap,Hastable ,ConcurrentHashMap
  • 给定一个字符串,统计每一个字符出现的次数
  • 说一下 hashmap 的插入过程
  • 设计一下权限,比如说后台的不同管理员需要看到不同的菜单
  • Java 的一些设计模式了解吗?
  • Java 的线程池有哪些?
  • 线程池的作用
  • 了解 dubbo 微服务 SpringCloud 吗?
  • 中间件有用过吗?
  • 说一下冒泡排序
  • 学习 Java 的时长
  • 还有其他的项目吗?

小红书

  • 自我介绍
  • 介绍下头条资讯的项目
  • 站内信功能是如何实现的?是实时通讯吗?就不是像一对一聊天的那种对吧?
  • 评论的话是不是我发布一条资讯,别人可以评论我,然后我可以指定他某条评论去回复?还是说大家都在他发布的资讯下面去评论?
  • Redis 了解吗?项目中为什么要用到 Redis ?
  • 为什么 Redis 会这么快吗?
  • 说一下 SpringBoot 的 IOC 概念
  • JVM 内存管理是看过书还是说在实际项目中做过调优?
  • 说一下堆(新生代,老年代)里的 GC 收集算法
  • 如何判断一个对象是否可回收?
  • 一个对象在堆里的流转是什么样的?
  • TCP 和 UDP 的区别
  • 你的这个项目的规范是 Restful 规范吗?
  • 基本的 get 和 post 的区别
  • 进程间的通信方式
  • 算法:实现一个最小栈,它有正常栈的 push 和 pop 功能,还有一个 getMin 的方法可以获取当前栈中最小的值,不需要取出来最小值,是一个 Integer 的栈。

Momenta

  • 对 Go 语言了解吗?
  • Python 熟吗?
  • C 语言用过吗?用 C 语言开发过小程序吗?
  • 对容器和 K8S 熟悉吗?
  • Restful 了解吗?
  • 说一下 Http 的 5 个 Methods
  • 如果在项目中你没有用 Restful 的 http 方式的话,那你是用什么方式去做隐层调用?
  • 自我介绍
  • 说一下你做的这两个项目,这两个项目是什么时候做的?
  • 问头条资讯项目,你用了 Redis 的哪些功能?
  • 为什么要用 Redis 把所有点赞的人放在一个队列里?是怎样一个业务呢?
    为什么不放在 MySQL 里面,直接用两张表就好了?
  • 那 Redis 与 MySQL 是怎样一个关系呢?
  • MySQL 是怎样搭建的?有几个副本?只有一个库对吗?
  • 有没有用到 MySQL 的 binlog ? 对这个了解吗?
  • 主从复制
  • 如果某一个人对一个新闻点过赞但后来取消了,你是怎么做的?你是能追踪到某个人吗?
  • 如何统计所有对一个新闻点赞过的人,包括曾经点赞过后来取消了的那一部分人?
  • 当点赞取消的时候,你的人数会减 1 吗?
  • 提一个业务需求:我要快速找到点过赞但后来又取消的人,这个如何实现?
  • 如果说我点了赞取消了然后又点赞了,这样的话你的表是不是又要再添加一列?
  • 当你的数据库非常大的时候,比如 2 T 的数据,我要往某一个表里加一行数据这个事情负载就会非常的大,那这该如何处理,有啥更好的办法吗?
  • 登陆系统怎么做的?
  • 登陆了以后服务端会给客户端返回一个 Session , token 还是一个 cookie ?
  • token 是什么类型?是 Java Web Token (Jession web token) 吗 ?
  • token 是做什么用的?
  • 客户端是怎么带上 token 的?是在哪里带上的?你发送的是什么请求,它是怎么带上的?
  • http 请求分为 header 和 body ?它是放在哪里?

华为

一面

  • 自我介绍
  • 算法题:给定任意一个字符串,求出现次数最多的字符。
  • ArrayList 和 LinkedList 的区别及它们的使用场景
  • 重载和重写的区别
  • 数据库有哪几种搜索引擎,它们的区别是什么?最大区别是什么?
  • 行级锁和表级锁的区别
  • MySQL 除了 DML 之外,还有哪几种语言?
  • MySQL 有哪几种连接方式,分别解释一下
  • 当使用左连接时,左边存在而右边不存在的行该怎么处理?
  • 简单说一下主键,索引,外键

二面

  • 成绩和奖学金
  • 团支书的职责和感受
  • 最成功的事是什么?
  • 当遇到压力的时候是怎么调节的?
  • 遇到的最大挫折是什么?
  • 意向工作城市

网宿科技

一面

  • 自我介绍
  • JDK 1.8 有哪些好用的特性? JDK 1.7 和 JDK 1.8 的区别
  • 你用 Python 做过什么东西?

Java 集合类

  • 你阅读过哪部分源码 ?
  • 说一下 ConcurrentHashMap 的原理
  • Hash 会有什么问题 ?
  • 怎么避免或者减少哈希碰撞 ?
  • HashMap 和 HashSet 的区别

JVM

  • Java 是怎么管理内存的 ?
  • Eden 区和 Survivor 区的容量是怎么分配的 ?
  • 什么情况下会触发 Minor GC ?
  • 类的 Class 对象是放在哪个区域 ?
  • StackOverflowError 是什么情况 ?哪一块内部不足会引起栈溢出,什么情况下会引起栈内存不足?
  • 说一下类加载过程,类的生命周期

MySQL

  • 说一下你对 MySQL 的理解
  • MySQL 有哪些引擎吗 ?
  • 简单说一下对索引的认识
  • MySQL 中 B 树叶子节点中存放的是什么?
  • 说一下 MySQL 的三范式,或者说在开发中有没有遇到三范式方面的问题

Redis

  • Redis 有什么优点 ?
  • 你刚说到 Redis 是内存数据库,那 Redis 宕机时数据还会存在吗 ?
  • 内存和硬盘的区别
  • 假设在电脑硬盘上存放了一个 word 文件,当点开此文件时,这个文件是否要加载到内存中 ?
  • 假如说 Word 文件有 4 M ,内存只有 2 M,怎么处理这种情况 ?
  • 需要排序的数据很大,比内存还大,这种情况该怎么处理?

框架

  • SpringMVC 的请求过程,从一个请求过来,到返回请求,SpringMVC 是怎么处理的 ?
  • Spring 有哪些特性 ?
  • MyBatis 中 # 和 $ 有什么区别 ?

网络

  • TCP 有哪几层 ?
  • TCP 是属于哪一层?
  • IP 是属于哪一层?
  • 10.8.123.121 是一个内网地址还是外网地址?是一个合法地址吗?那 10.8.256.121 呢?
  • HTTP 是在哪一层?
  • 传输层一般有哪几个协议?
  • 说一下 TCP 和 UDP 的优缺点
  • UDP 的使用场景
  • HTTP 是基于 TCP 和 UDP 还是说和这两者没关系?
  • 谈一下你对 HTTP 的理解
  • 既然说 HTTP 是无状态的,那服务器怎么记住上次请求的用户?
  • Session 和 Cookie 有什么关系?
  • 请求两个不同的网站,比如 Google 和 baidu.com ,那请求 Goole 网站的时候会把请求百度时的 Cookie 带过去吗?

项目

  • 头条资讯项目中的内容是怎么产生的?
  • MD5 加密算法有什么特点?
  • 为什么不用 hhd,3des 等其他加密算法?有没有考虑过这个问题。
  • 如何做到简化后续开发成本?
  • 有没有遇到过 A 用户获取自己的信息时是获取的 B 用户的情况?
  • 说一下 ThreadLocal 的理解,或者说你对它的理解

多线程

  • 对多线程编程了解吗?
  • AQS 了解吗?

二面

  • 项目中有涉及到界面这一块吗?登陆入口界面
  • 数据是加密完才传输到后台吗?
  • 你做的功能可能只考虑到了密码校验这一块,有考虑到密码存储这一块吗?就是说账号密码有存到数据库吗?
  • 数据库里面存放的密码是明文还是密文?
  • 你是用 MyBatis 来通过写 SQL 语句还是用 XML 映射的方式来配置 ?
  • 使用 MyBatis 这种数据库框架相比之前写 JDBC 语句去调用的方式有哪些优点?
  • 有了解数据库连接池吗?
  • 关于 Java 虚拟机,平时是只看了理论还是说平时实践过,比如说自己产生了一些数据,然后看它是如何回收的?
  • 什么时候会触发内存回收?
  • 怎么判定一个对象不存活,需要被回收?
  • 了解 SpringCloud 等微服务的概念吗?
  • 对于前端的 CSS,前后端的交互 Ajax 等了解吗?

搜狐畅游

  • 个人基本情况
  • 详细介绍下你的项目
  • 站内信是怎么实现的,具体说下,比如当我编辑一条消息点提交发送后,是怎么上传给服务器的,需要带些什么参数吗?结合 CDN 说下,它是怎么发送过去的?然后另外一个用户是怎么收到这条消息的。
  • 项目的邮件功能是怎么实现的?
  • 具体说一下是怎么加密的,或者加密算法的核心几行代码
  • 说一下异步队列是如何实现的
  • 缩短了用户的平均请求等待时间是指哪里的时间?
  • Redis 除了用到了它的 List 结构,还用到 Redis 的其他结构没?
  • 为什么要用 Redis 的 set 结构?
  • 这个网站有评论功能没?是像知乎那种嵌套的评论吗?比如其他人可以在你的评论里面再评论。如果要你设计这种评论,你该怎么设计?
  • 阅读过 JDK 哪些源码?说一下。
  • 这些技能清单里面还有哪个是你比较熟悉的,说一下
  • 怎么学习源码的?

同城艺龙

  • 你对集合了解多少
  • 讲一下 HashMap
  • HashSet 是如何 set 的
  • 线程的状态转换
  • Thread.wait() 和 Thread.sleep() 的区别
  • 你了解 JUC 吗
  • static 代码块顺序问题
  • 你了解数据库的底层吗
  • 你觉得你还有什么擅长的?

堆糖

  • 自我介绍
  • 说一下 Java 的 Object 类
  • 说一下 Thread.sleep(),它会空出 CPU 吗?
  • 阅读过哪些源码?挑一个熟悉的说一下
  • 说一下 HashMap
  • HashMap 中链表转成红黑树的阈值是 8,为什么是 8?
  • 一个实例 Instance 在 JVM 中是怎么表示的?它的数据结构是什么样子的?
  • 说一下 Redis 的数据结构
  • 算法题:用两个栈实现一个队列
  • 说一下对 Spring 的了解

亿联网络

  • 自我介绍
  • 说一下 JVM 内存分区
  • 说一下 Java 发射,它的使用场景,在项目中有用到吗?
  • 设计模式了解哪些?
  • Java 多线程了解吗?
  • 说一下线程互斥的方法
  • 说一下线程同步的方法
  • Java 的锁了解吗?
  • MySQL 存储引擎有哪几种?
  • 事务的四大特性
  • 说一下索引
  • 说一下复合索引
  • 说一下幻读
  • 介绍一下头条资讯项目
  • 说一下项目中的难点
  • 用户的点赞点踩全都放在 Redis 还是 MySQL 里面吗?
  • 当用户量很大时,比如今日头条的用户量,数据还放在数据库里面吗?或者说怎么处理这种情况?
  • 说一下 Spring AOP
  • 抛开 Spring 来说,如何自己实现 Spring AOP ?
  • 网络通信了解吗?

深信服(测试岗)

一面

  • 讲一下 JVM 垃圾回收处理
  • 有过 JVM 调试经验吗?
  • Python 的垃圾回收和 Java 的垃圾回收有什么区别?
  • 说一下 JDK 1.8 之后的 hashmap 的底层原理,使用什么实现的?
  • 对算法了解吗?
  • 介绍下头条资讯的项目
  • 有看过 Redis 源码吗?
  • 异步队列是如何实现的?
  • 对网络熟悉吗?网络协议,路由协议(静态路由,策略路由)等
  • TCP 和 UDP 的区别
  • TCP 的滑动窗口了解吗?
  • 怎么最大化的利用滑动窗口来使传输速度最快以及可靠传输?
  • 了解 Java 多线程吗?
  • 线程池和自己创建线程的区别
  • Linux 熟悉吗?
  • 对虚拟化了解吗?

二面

  • 介绍一下项目
  • 闲聊
#实习##面经##阿里巴巴##腾讯##滴滴##Java工程师#
全部评论
老哥 看了你腾讯pcg的面经,我感觉有点劝退面的意思 你做的是牛客的项目,你简历上面估计写了Threadlocal类的使用(项目里用到,或者你没有写但是问到了。但是我猜是大概率你写了,因为我做过这个项目。)然后Threadlocal类名为本地线程变量,在hostholder类中使用这个类创建的对象,可以让多线程访问这个user对象时,每个对象都创建一个对象副本,保证不同的用户是独立的。然后他就继续往这个点追问,要是稍微问题偏一点 感觉就会很慌了。
1 回复 分享
发布于 2019-05-23 16:30
感谢分享,很有用。
点赞 回复 分享
发布于 2019-05-03 19:20
楼主面试这么多公司吗?
点赞 回复 分享
发布于 2019-05-03 19:22
感谢楼主,非常棒!
点赞 回复 分享
发布于 2019-05-03 21:38
感谢楼主!
点赞 回复 分享
发布于 2019-05-03 22:14
同通信+电子背景,想问下楼主为啥没选择去华为继续本专业?
点赞 回复 分享
发布于 2019-05-04 01:13
楼主最后去了哪呀,我也拿了堆糖offer
点赞 回复 分享
发布于 2019-05-04 01:45
感谢楼主的分享,一起加油
点赞 回复 分享
发布于 2019-05-04 10:04
点赞 回复 分享
发布于 2019-05-04 12:00
楼主太牛了
点赞 回复 分享
发布于 2019-05-22 12:45
我才发现你是研究生233,很幸运认识hhh
点赞 回复 分享
发布于 2019-05-22 13:05
是怎么样通过笔试 参加面试的 我很多简历都被刷了 还想请教一下
点赞 回复 分享
发布于 2019-05-23 12:44
经过多方面讨论 你这个腾讯面试 劝退面无疑
点赞 回复 分享
发布于 2019-05-23 17:35
感谢分享!请问我本科是双非一本,硕士还行,简历上要写本科学校吗?
点赞 回复 分享
发布于 2019-05-29 22:27
头皮发麻
点赞 回复 分享
发布于 2019-05-29 23:11
你好,可以参考一下你做的牛客项目的简历描述吗,不知道怎么描述这个项目,还望赐教
点赞 回复 分享
发布于 2019-06-16 20:44
路过,顶一个
点赞 回复 分享
发布于 2019-06-16 22:29
真香
点赞 回复 分享
发布于 2019-06-17 11:31
网宿竟然会问得这么深
点赞 回复 分享
发布于 2019-08-16 14:57
老哥,只做这个中级项目课面试OK吗??在犹豫要不要买
点赞 回复 分享
发布于 2019-08-23 16:09

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
76 1179 评论
分享
牛客网
牛客企业服务