jjzjj

三无选手上岸大厂的后端校招经验

一枫说码 2023-03-28 原文

众所周知,受疫情影响,互联网迎来了『寒冬』,大厂 HC 骤减,腾讯基本不招人,华为也不再是有手就行,阿里某些部门流传只招 23 所院校,在如此严峻的形势下,上岸大厂变得愈发困难...

1. 个人介绍

大家好,我是一枫。本科末流 211,硕士中流 985,均是电子信息专业,非科班、无实习、无比赛,最终上岸字节跳动,岗位是后端开发。

我是在读研的时候接触到的 Java,在 B 站学习了 Java 基础、MySQL 基础、JavaWeb、SSM、SpringBoot,但是那时候只是懂个皮毛,比如 MySQL 就只会 Insert、Update、Select、Delete,像什么索引、事务、慢查询等都一窍不通。

正式准备秋招是从 2022 年的一月份开始的,经过长达大半年的努力,拿到了字节、美团、携程等 offer,虽然说并不多,但也是很满意了。

在我的面试过程中,基本上技术面都能够通过,很多是在 HR 面或排序中挂掉了,如蚂蚁、OPPO、蔚来等,在这里还是提醒一下大家,如果有机会实习的话,一定要实习,因为现在后端开发比较卷,在大家知识面差不多的情况下,企业肯定还是会倾向于招聘有实习经验的同学,比如我在面京东的时候,面试官就很可惜的说,我虽然基础较好,但是前面的几个竞争者都有美团、华为等公司实习,我这方面比较吃亏,还安慰我说可能还有其他部门捞...

2. 面试经验

下面是对秋招整个过程的一点小建议,希望有所帮助。

  • 在制作简历时,有些自己只懂皮毛的,最好不要写上去,主要写自己比较熟悉的内容,比如之前我在简历上写了 ElasticSearch,但是每次面试官问,我都回答的不太好,反而减分,之后就将它从简历上删掉了。
  • 对于简历投递,建议大家越早越好,因为现在的形式是 HC 较少,而候选人较多,到了后期很可能就没有面试机会了,而且如果投的早,即使挂了,后面也可能被捞。我有些公司就因为投递较晚失去了机会,比如 zoom 二面结束后,公司全面锁了 HC,即使面试表现很好,也无济于事。
  • 建议大家总结一份属于自己的知识点笔记。面试中有很多高频问题,经常会被问到,比如 synchronized 的锁升级过程、Java 运行时区域有哪些、浏览器输入 URL 后回车发生了什么等,大家可以提前准备好一个面试版本,如果面试官问你了,就可以『背诵』笔记上的内容。
  • 建议大家多面试,不要怕,刚开始可以从一些中小厂练起。面试也是有一定技巧的,刚开始面试的时候难免紧张,可能语无伦次,答的很差,但随着面试多了,慢慢的就找到了感觉,不仅能够流畅的回答问题,甚至可以逐步引导面试官问自己懂的部分,彰显出自己的实力。对于不能实习的同学,建议也参加一下暑期实习招聘,主要就是让自己了解面试的过程,总结套路,并知道自己有哪些不足,同时有些公司面试通过了还可能会发放秋招直通车。
  • 在面试过程中,如果遇到自己可能不太懂的知识点,不要立马说自己不会,可以先思考一会,说不定就想起来了。同时即使有些内容不会,也可以一些与之相关的,比如问 Redis 的字典底层原理,如果不会,可以说自己懂 Java HashMap 的底层原理。并且对于一些自己比较熟的内容,可以适当的延伸,不要总是等着面试官问。比如面试官问 HTTP 和 HTTPS 的区别,除了简单地说几点区别外,还可以主动聊 HTTPS 为什么安全,SSL/TLS 握手的过程等。
  • 因为现在主要是线上面试,大家可以对自己的面试过程录屏,然后进行复盘,一方面是查一下自己不懂的知识点,另一方面是看一下自己在语速、表情、姿态、语言等方面是不是有需要改变的地方。

3. 学习经验

因为我主要准备的是 Java 后端,下面说一下个人的经验。

在一场面试过程中,一般包括三方面的考察:基础知识、项目经历、算法能力,都比较重要!

(1)基础知识

这方面涉及的内容比较多,我认为以下内容是较为重要的:Java 基础、JVM、Java 并发、MySQL、Redis、计算机网络、操作系统、Spring。一般情况下,我会先看 B 站上的视频入门,然后再看书籍深入,不懂的或者欠缺的知识点再搜博客看。

  • Java 基础

    对于 Java 基础部分,重点是 Java 集合,比如 HashMap,这块我没有看过具体的书籍(《Java 核心技术 卷一》一直在吃灰...),主要是看的博客和源码,也会看一些网上总结的面试指南,如 JavaGuideCS-NotesJava 面试小抄等,都是非常全面的。

  • JVM

    这块我以前也没了解过,一直感觉比较难,但后来面过几场试后发现,问得问题都比较固定,比如 Java 运行时的五大数据区域、垃圾收集算法&垃圾收集器、类加载过程等。推荐如下:

  • Java 并发

    这块比较重要,面试高频点,比如 synchronized 锁升级、volatile 原理、ThreadLocal 原理、线程池原理等。推荐如下:

  • MySQL

    这块比较重要,作为后端,我们需要经常和数据库打交道,推荐如下:

  • Redis

    这块面试题较为固定,比如 Redis 的数据结构、持久化、哨兵、缓存击穿、缓存穿透、缓存雪崩、Mysql 和 Redis 的数据一致性等,推荐如下:

  • 计算机网络

    这块重点需要掌握以下协议:HTTP、HTTPS、DNS、TCP。推荐如下:

    • 视频:计算机网络微课堂(有字幕无背景音乐版),用动画演示,通俗易懂,而且视频相对不长。
    • 书籍:《网络是怎么连接的》,内容不长,像读小说一样,能够知道计算机网络的一个全貌。
    • 博客:图解网络,小林coding 的文章汇总,应付秋招基本够用,平常会分享一些秋招的面试题,对我帮助蛮大的。
  • 操作系统

    这块我被问到的很少,基本也就是问一下为什么要有虚拟内存、进程调度有哪些算法等。推荐如下:

  • Spring

    对于 Java 开发而言,Spring 肯定是非常重要的,推荐如下:

  • 其他

    • 目前对于 MQ 的考察慢慢多了起来,我学习的是 RabbitMQ,比较简单,大家也可以学一下 Kafka,用的更多一点。同时可以了解一下 SpringCloud 相关内容(没时间就算了),RabbitMQ 和 SpringCloud 我是看了视频:SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud
    • 面试中也可能会出现海量数据处理的问题,可以看这篇文章
    • 面试中也可能会出现一些智力题,我是看到牛客的一些面经上的智力题后,百度搜了一些常见的,如赛马问题、过桥问题等。
    • 随着后端的不断内卷,现在校招生也可能会被问到设计模式了,这块挺难的,毕竟是思想性的东西,大家需要提前准备一下,不需要了解全部设计模式,只需要熟悉其中的几个能够在面试中说即可,比如单例模式(必会)、代理模式、工厂模式等。
    • 同时目前面试中也出现了越来越多的场景题,这个也是挺困难的,它不像基础知识那样会有固定的答案,属于一种开放性问题,更考察小伙伴们的系统设计能力以及知识的全面性,我是搜了一些经常会出现的场景题,比如秒杀、微博发帖、短地址设计等,然后在面试中如果遇到,就考虑如何引导面试官问一些基础性的问题,比如 MySQL、Redis、RabbitMQ 等。

(2)项目经历

因为没有实习,所以这块我是比较匮乏的,大家能去实习还是要去实习!我简历上一共写了两个项目,分别是牛客网的仿牛客论坛项目以及读研期间做的一个导师横向课题。因为做的横向课题与后端关系不大,基本没有被问过,大部分面试官都是问我仿牛客论坛项目。

仿牛客论坛这个项目涉及的内容挺丰富的,而且技术栈比较多,非常适合练手。我是在跟着敲完这个项目后,对项目进行了重构,比如它原先使用的是 Kafka,我换成了自己熟悉的 RabbitMQ,比如使用 SpringSecurity 和 JWT 重构了登录部分,又比如将项目重构出了一个前后端分离的版本(前端找的实验室同学做的)。本来还想着将私信功能用 WebSocket 进行重构,但是时间不够,我也不想再折腾了...

大家在做项目后,也可以想想能不能利用自己的所学知识点对项目进行重构,同时提前想好如果面试官让介绍项目时应该如何说,问项目的亮点和难点时,应该怎么回答(如果实在没有亮点或难点,也可以说一下自己学到了哪些知识,比如如何限流的、用到了 Redis 的哪些数据结构等)。

(3)算法能力

近些年来,算法是后端面试的重中之重,基本上每场面试都会写至少一道算法题,大家务必重视。

我是先看了《算法 第 4 版》这本书了解了一些基本的知识之后,便开始在力扣刷题了,一共刷了 200 道左右,主要刷的就是 Hot100剑指 Offer,期间也看了一遍代码随想录,学习了挺多做题套路。

在刷题过程中,Hot100 是超级重点,很多面试官都会出上面的题目,基本上 Hot100 能吃透,面试题目问题不大,我整个秋招一共刷了 3 遍 Hot100 和 2 遍剑指 Offer,后期刷的速度越来越快,比如写快排基本都不用怎么想,几分钟就完整写出来了。

4. 碎碎念

在准备秋招过程中,我觉得最重要的一件事就是做笔记了,毕竟后端的知识非常多,某个知识点一旦不回顾,可能很快就忘了,整个过程中,我一共记录了超过二十万字的笔记,有三百多页。

网上总结的知识点笔记一方面可能知识点不全,另一方面可能写的比较难懂,甚至有些错误。而自己整理的笔记,毕竟是写给自己看的,那么肯定是更易于理解的,下次忘了的时候也能够通过看笔记迅速回忆起来。

每隔一段时间,我都会全面复习自己的笔记,甚至『背诵』,而且会经常对自己的笔记进行重新整理,毕竟伴随着学习的深入,很多知识点可能理解的更为透彻。

大家如果需要我的笔记作为参考的话,可以关注或私信『一枫说码』,免费分享哈!

最后,大家要稳住心态,不要放弃任何机会,加油,你一定会找到理想的工作!

有关三无选手上岸大厂的后端校招经验的更多相关文章

  1. ruby-on-rails - 是否有针对经验丰富的 Ruby 开发人员的 Rails 指南? - 2

    几年前,我从一些Rails初学者指南开始学习Ruby/Rails。那时我已经学习了Rails的基础知识,例如模型和路由的一些约定优于配置,以及如何使用helpers等。但是,我并没有坚持多久,因为此后不久我发现了Sinatra,并决定我个人更喜欢它。不过,我最终真的爱上了Ruby,从那以后我写了很多Ruby,几乎没有一个是针对任何Rails项目的。然而,事实证明大部分可用的Ruby工作都是针对Rails应用程序的。所以我现在想再尝试一下Rails。现在,该引用资料很棒并且有很多有用的信息,但我只查看了我需要的特定内容的引用资料,而没有记住。但我不太可能在引用资料中看到像script/c

  2. ruby - 将 Ember.js 与简单的 Sinatra 后端集成 - 2

    有很多文档介绍如何构建和创建以Rails作为后端的Ember.js应用程序。流行的解决方案是使用gems作为ember-rails和ember-source或合二为一的ember-appkit-rails。但是我正在尝试创建一个简单的Sinatra应用程序,该应用程序以Ember.js作为前端来处理仅JSON后端。我发现的少数资源似乎有点过时,所以我正在寻找简单的方法来做到这一点。所以我的问题是:我如何将Ember.js与简单的Sinatra后端集成?如何执行此操作的示例将不胜感激。 最佳答案 有一个verysimplerepoon

  3. ruby-on-rails - 有没有人有使用 Ruby in Steel 的经验? - 2

    主要来自.NET背景,我非常喜欢(无论好坏)VisualStudio。不过,我现在要去学校学习软件工程,我的第一个类是使用RubyonRails的XP(极限编程)。大多数情况下,我听说当您使用Ruby进行开发时,您往往会完全跳过整个IDE;我对这种可能性完全开放。不过,那里有IDE,因此似乎至少一些人仍然认为使用IDE是值得的。由于我非常熟悉VS,我只是想知道是否有人使用过RubyInSteel.从网站上看,它确实看起来不错。不过,我真的不知道它对一般RoR开发有多大用处或适用性,这就是为什么我认为我会把这个问题抛在那里。您使用过RubyInSteel吗?你对它的印象如何?它如何与其他

  4. (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战 - 2

    快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目

  5. ruby-on-rails - Ruby:使用 Gems 处理重复性日历事件的经验? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.11个月前关闭。Improvethisquestion我想为我的项目找到一个ruby​​gem,以处理符合以下要求的重复事件:可以处理“每周星期二和星期三”或“每月最后一个星期二”这样的模式可以计算下一次出现可以将模式序列化/反序列化为字符串以存储在数据库中序列化格式稳定(即升级后仍能加载)至少使用以下模式组件:时间、星期几、月份日期、月份中的第n天;可以每天、每周、每月或间隔n天、周或月重复可以用自然的英语语言表示模式可以解析英语模

  6. ruby - 无法从 ruby​​gems.org 安装 'cocoapods' gem(不良响应后端读取错误) - 2

    当我在OSXMavericks上运行“geminstallcocoapods”时出现错误。$geminstallcocoapodsERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:Unabletodownloaddatafromhttps://rubygems.org/-badresponsebackendreaderror503(https://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/cocoapods-0.27.1.gemspec.rz)ERROR:Possiblea

  7. 真心推荐8个高质量Java学习网站,一起从入门到精通java语言,大厂java面试真题分享,建议码住!... - 2

    Java自学超全干货分享!学不学自己看着办吧!最近收到了很多知友私信我:”0基础有什么推荐的Java学习工具?”★作为ACM金牌选手,这些年在跟很多学员受教的过程中,积累了一些关于新手Java学习的经验和踩过的坑,今天来跟大家分享几点:1.找准学习路径和方法(选择不对,努力白费)2.合理规划学习时间,不在没必要的技术上浪费时间(找重点)3.找一些志同道合的朋友一起学习(相互鞭策)4.找一个前辈指点(方式方法)“还没开始就结束了”,作为java新手小白,最难自然是找对学习路径和方法……于是,本着一颗无私奉献的心,我连夜整理出了8个优质的Java免费学习网站,分享给大家。NO.1菜鸟教程国内小白入

  8. Vue学习笔记:Vue element-ui中table组件的使用----接入后端数据 - 2

    记个笔记以免遗忘,建议还是查看Element-UI提供的官方文档学习,自己摸索比较难受官方文档:Element-UI组件TableElement-UI官网提供了许多Table格式,这里以一个带有筛选器的表格为例表格的官网显示效果:直接将官方提供的示例代码贴入.vue文件中即可使用显示的数据是通过data()方法提供的假数据。方法见下:data(){return{tableData:[{date:'2016-05-02',name:'王小虎',address:'上海市普陀区金沙江路1518弄'},{date:'2016-05-04',name:'王小虎',address:'上海市普陀区金沙江路1

  9. ruby - 是否有教程教授经验丰富的程序员使用的常见 Ruby 编程习语,但对新手来说可能并不明显? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在寻找Ruby的CodeLikeaPythonista:IdiomaticPython等价物理想的特性:易于阅读涵盖所有主题的单一文档:提示、技巧、指南、注意事项和陷阱比一本书还小惯用语应该在标准发行版中开箱即用(%sudoapt-getinstallruby​​irbrdoc)请尽可能为每个答案放一个教程,并附上教程中的示例代码及其含义。更新:这些

  10. ruoyi-vue 新建模块--若依前后端分离系统代码生成。 - 2

    目录:1.在数据库中创建表2.使用代码生成功能,生成基础代码2.1修改代码生成器中配置文件generator.yml2.2使用系统工具代码生成3.新建子模块,迁移代码3.1创建grayskyax-assetsmanagement模块3.2在RuoYi整个项目下的`pom.xml`中引入刚刚新建的模块:3.3在ruoyi-admin模块的pom.xml中引入新建的模块3.4在新建的assetsManagement模块中引入ruoyi-common模块3.5将之前解压后的文件放如项目的对应目录下;3.6在数据库中执行生成的sql脚本3.7配置扫描路径application.yml,applicat

随机推荐