查看原文
其他

Java后端实习面经,电子科大大三读者投稿!看了之后感触颇深!很开心!

哆啦 A 梦 JavaGuide 2020-12-28

大家好!我是 Guide 哥(这俗气的开头,Guide 哥内心暗自 BB)。

这篇文章是我的一位读者的投稿,为了方便称呼加上这位老哥的头像是哆啦 A 梦,我暂时称呼这位读者为哆啦 A 梦吧!哈哈!

那天我在朋友圈发了一个说说来恭喜一位校招成功进入网易的读者,然后哆啦 A 梦就评论说我的 JavaGuide 对他的帮助很大,他自己也成功拿到了京东的实习。每次看到这类消息,你可以脑补一下坐在屏幕前的傻笑的我,哈哈!

然后,我就给哆啦 A 梦说,他可以分享一下自己的找工作的一些经验,结果第二天哆啦 A 梦就给我发了过来。看了之后,感觉写的真的很用心!下面的内容尤其对面试没有把握或者学习没有方向的人有很大帮助!

关于我

我现在是本科大三学生,在电子科大就读软件工程专业,在我大一大二的时候其实也并没有找到所谓的方向,将来想要从事什么岗位。只是一心想着先学好学校的专业课程,工作就业的事以后再说。我就一直用自己在学校课程上取得的一点点成绩在麻痹自己,逃避就业的现实。其实大家也都非常清楚,现在高校里面讲授的内容很多都是偏向于底层的一些理论知识,并不会具体教你框架、怎么做项目、怎么样写代码、即使有很多实验课程也都是非常地老套和实际情况差距非常大。这就直接导致一个很大的问题:我的编程能力很差,没有一点自信。

由于我们学院特殊的安排,我们基本所有必修专业课程的学习都在大一和大二修完,大三上半学期有少量的专业选修课程和思政课。大三下整个学期都是要去企业完成 6 个月的实习。了解到很多优秀的学长在大三实习的时候就拿到了非常厉害的 offer 和优厚实习待遇,我当然是非常的心动,希望能够在大三下学期的时候能拿到一个不错的实习岗位。由于我个人是非常不愿意去做测试开发,算法开发的门槛又相对较高,然后就选择了 Java 这个方向。

准备面试

我其实在大二上半学期的时候修了 Java 这门课程,但是学校的 Java 课程是非常老套,和实际企业里的开发是完全脱节。在大三上半学期我当时就在网上找各种 Java 的学习路线,但我发现有很多学习路线看完都是“实力劝退”的感觉,因为内容太多太杂,对于一个想要入门开发的 Javaer 非常不友好。也是机缘巧合,在一个学长(很厉害的一个学长,目前在华科直博)推荐下,了解到 JavaGuide 这个开源项目,从那时起我才算是打开了新世界的大门。学习路线非常清楚,特别对于我们这种初学者的人来说非常友好,知识点的总结也在我后来面试过程帮了大忙。

看到身边的大佬们手拿多个大厂实习 offer 不知道怎么选时,一方面是非常羡慕,另一方面就是觉得自己是在还以前欠下的债,所以大三上整个学期我的压力都是挺大的,边学习 Java 的技术栈边准备面试。前前后后面试的公司有百度、成都 SAP、京东(京东数科)、新浪微博等,最终也算是如愿以偿,马上准备入职京东。

至于我怎么准备的面试?我觉得很重要的一点就是根据自己写的简历和所投递岗位的 JD 有针对性地复习。在简历上最为重要的版块就是项目经历和技能清单这两块,这两部分直接决定了能不能拿到面试资格和面试官怎样提问。所以我当时就遇到了一种窘境,因为我是边学 Java 边面试,项目这部分可写的非常少,基本就没有。

我看过各大公司的招聘需求:Java 开发现在基本都是 SSM、SpringBoot 框架等等,当我学完了这部分之后,我就跟着学校老师那边做了一个 Java 后端的项目把学的框架练习了一遍,写在了简历上,之后我就对项目中的技术点进行复盘

在当时我确实有着投机的心态,但是必须要有这样一个项目,否则我可能连面试的机会都没有,在参加了多次面试之后我的感受就是:作为实习生,项目这一方面重点在于面试官他要确认你是实实在在地做了,并且有你自己的思考和收获。面试的重点其实是在很多基础的问题上(面试题放在后面),在基础这部分,我反复地复习 JavaGuide 上面的基础知识点,在这里必须感谢 JavaGuide,这可以说直接影响了我在面试中的表现。

面试真题

下面的面试题是来自百度、京东、新浪微博,我进行了一个总结,希望能帮到大家,划重点的部分表示反复被问到

数据结构与算法篇

  • B 树和 B+树的区别
  • 你了解哪些排序算法?算法的思想、时间复杂度、空间复杂度?
  • LeetCode 第 1 题及第 15 题:两数之和及三数之和问题

计算机网络篇

  • TCP 三次握手、四次挥手流程?为什么三次,为什么四次?
  • TCP 和 UDP 区别,有 TCP 为什么还要有 UDP?
  • TCP 粘包和拆包问题有了解吗?
  • TCP 是怎样保持连接的?

操作系统篇

  • 并发编程中死锁有了解吗?死锁产生的条件是什么?你在项目中是怎样解除避免和解除死锁的?
  • 进程的都有哪些状态?怎么转换的?
  • Linux 下文件的操作命令

数据库篇

  • 数据库范式了解吗?在你的项目中怎么运用的?会出现什么问题?
  • 数据库索引了解吗?MySQL 中索引底层是怎么实现的?
  • MySQL 中存储引擎 InnoDB 和 MyISAM 有什么区别?分别用于什么场景?
  • 数据库事务有了解吗?事务的隔离级别?你在项目中使用的隔离级别是什么?
  • SQL 优化有什么思路?
  • 项目中使用到外键了吗?外键作用?使用外键要注意些什么问题?
  • 除了 MySQL 数据库你还用到哪些数据库?Redis 数据库和 MySQL 数据库的区别?
  • 设计一个数据库表

Java 基础篇

  • 类和对象的区别?
  • 讲讲 static 关键字和 final 关键字
  • synchronized 关键字是怎么用的?底层实现有了解吗?还有用过其他的锁吗?
  • BIO、NIO、AIO 区别有哪些?项目中有用到吗?Netty 了解吗?
  • 接口和抽象类的区别?什么时候用接口,什么时候用抽象类?接口可以继承接口吗?
  • HashMap 和 HashTable 的区别是什么?
  • ConcurrentHashMapHashMap的区别是什么?ConcurrentHashMap为什么线程安全?
  • HashMap 和 HashSet 的区别?HashSet 是如何检查重复的?
  • Java 中线程的状态?join()、yield()方法是干什么?
  • Object 类下有哪些方法?
  • 字符串"123"转换成整型123API是什么?整型123转换成字符串“123”的 API 又是什么?
  • 创建线程有几种方式?分别是怎么做的?
  • 线程池用过吗?如何创建一个线程池?其中各个参数的含义是什么?为什么要用线程池?coreSize?
  • synchronized、ReentrantLock 区别?
  • CountDownLatch 和 Semaphore 用过吗?他们的区别是什么?CountDownLatch 应用场景?比如现在要让第 5 个线程等待前 4 个线程执行完毕再执行,具体怎么做?
  • 使用 synchronized 来实现单缓冲区的生产者消费者模型?
  • JVM 有了解吗?JVM 中参数–Xms-Xmx是什么意思?
  • 设计模式有了解过哪些?单例设计模式知道哪几种写法?策略设计模式了解吗?你在项目中用到了哪些设计模式?
  • Spring 中依赖注入有几种方式?怎么做的?
  • Spring 框架中有哪些组件了解吗?分别做什么的?
  • SpringMVC 的这种 MVC 模式了解吗?他的工作原理是什么?用到了哪些设计模式?(基本每轮面试都被问到)
  • SpringMVC 中要接受用户传来的参数要怎么做?REST 的风格呢?
  • Spring 中 bean 的创建过程了解吗?
  • SpringBoot 和 SpringMVC 的区别和联系是什么?了解 SpringBoot 的启动流程吗?SpringBoot 自动配置是如何实现的?

总结:其实我们看上面的问题,整体来说还是非常地基础,尤其对于实习生和应届生来说,基础是第一位的,就包括百度和京东的面试官都在面试最后给我强调基础的重要性

写在最后

以前觉得自己还小还早,告诉自己才大一大二,可是当突然把自己推向生活的洪流,我仿佛什么都做不了。有了这段找实习的经历,我觉得自己成长了不少,要勇敢地跳出自己的舒适圈,当自己不知道做什么的时候就去面试,让社会对你进行评价。

在这个过程中,我也眼看着很多好的机会从我身边流走,都是因为自己还不够优秀,虽然现在有幸拿到了实习机会,但我也时刻告诫自己要保持学习,沉淀自己,当有更好的机会来临时我能够抓的住。

在 Java 开发这条路上,我也算是刚刚入门,要学的还很多,作为 JavaGuide 的忠实粉丝,再次感谢 JavaGuide! (Guide 哥故意加粗了一下,开心 😄)

Guide 哥注:生活要继续,学习也要继续。对我而言,JavaGuide 还有太多太多不足的地方,后面的日子会继续完善下去。







  我和面试官之间关于操作系统的一场对弈!写了很久,希望对你有帮助!
  后端程序员必备:书写高质量SQL的30条建议
  编码5分钟,命名2小时?史上最全的Java命名规范参考!
  避免自己写的 url 被diss!建议看看这篇RestFul API简明教程!






好文让朋友知道你“在看”

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存