前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两个月30场面试--互联网大厂后端开发面试总结

两个月30场面试--互联网大厂后端开发面试总结

原创
作者头像
2011aad
发布2023-07-16 14:52:45
1.3K0
发布2023-07-16 14:52:45
举报

今年业务调整,终于下定决心走出目前的环境,准备面试换工作。面试进行了2个月,一共30多场面试,最终拿到字节、小红书、蚂蚁、拼多多、SelectDB 5个offer。面试的过程有坎坷也有些感触,总结一下,希望能帮助到寒冬下也在找工作的小伙伴吧。

首先简单介绍下自己的背景,方便看文章的小伙伴对标自己的经历。本人交大本硕,2018年毕业,毕业后就一直在腾讯工作,工作年限刚过5年,编程语言主要是C++和go,做ToB业务后台开发,业务方向在腾讯里个人感觉中等偏下吧,但领导蛮好、对我也还不错,所以绩效在团队里能排到前30%,2021年升T9。业务方向上做过IM和大数据相关的一些业务。

去年也做过一些面试,面了20多场,2023年和2022年相比:从市场行情上看,2022年有很多量化公司和新能源车企(蔚小理)的招聘,2023年这些企业明显缩招;互联网大厂招聘感觉有所回暖,但总体变化不大。

互联网大厂面试的形式基本类似,1个小时的视频面试,内容主要包括以下5个方面:项目经历、后台基础组件“八股文”、系统设计题、算法题、软性问题。下面就针对这5个方面分别介绍下都考察什么,以及如何准备。

项目经历

在我所有的面试中,这个部分都是时间占比最高的部分,基本上要占到30分钟左右,如果有些投递的岗位不是很匹配的情况,这部分时间可能会缩短,但基本也要20分钟以上。面试官基本上会针对你的简历聊,比如让你介绍下简历上写的某某事情,我总结下来,在这个部分中,面试官会关注3点:

  1. 简历上的内容是不是真的是你做的,所以会问到很多技术细节,比如库表设计、前后端如何交互、有没有对比其他设计方案等。
  2. 你有没有项目推动的能力(任务拆解、团队协作、进度管理)。
  3. 思考的深度(你的方案在哪些点还有优化的空间)和广度(你有没有了解你负责的项目和模块在整个系统中的位置,和其他部分如何配合和交互)。

所以,一定要做到简历上写的内容,自己要非常熟。这个熟不光是指它技术上是怎么实现的,还要熟当时做这个事情的完整过程,项目中遇到了哪些问题和挑战,你是如何解决的;项目上线后的运维、监控、告警情况;有哪些点可以做的更好。

比如我在一次面试中被问到一个具体接口的请求量的情况,当时很久没看就忘记了,当时就感觉很尴尬,面试也不出意外的挂了。

面试前期还是要找一些不太想去的公司练手,多说几次项目,也通过对方的提问找找自己有没有回顾不到位的点(自己回顾准备总有些遗漏,通过面试交流和复盘能准备的更细致)。或者也可以找熟悉的同学、同事帮自己做下模拟面试,或者私信联系我也行,我也很愿意帮助各位找工作的小伙伴。

项目熟悉是一方面,也要注意介绍表达的技巧,要能让面试官感兴趣,跟着你的介绍思考,甚至问出你提前准备好答案的问题。项目介绍可以参考STAR法则,我一般会先只讲S(项目背景,为啥要做这个事)、T(任务,我们是做了一个什么事)和R(最后效果是啥),非常简略或者基本不说A(具体采取了哪些行动)。在5分钟左右讲完STR之后,面试官一般会主动问这里具体做了什么事情,这样和面试官的互动感比较强。最后再聊聊整个项目里遇到的痛点和难点,以及自身的一些复盘(如果再做一次,哪里可以做的更好)。

八股文

这一部分算是面试里的基础考试,如果刚工作2-3年的同学这部分会问的多一些,5年及以上的同学基本上是在项目中穿插着问一些组件的问题,有的甚至不直接问这种问题。这部分虽然在面试中占比时间不多,但作为基础还是要好好准备一下的,主要在面试中体现你的专业度和对面试的重视。在面试中这部分问题有些确实不知道就回答不知道,不要乱猜,这部分偶尔有不会的也正常,面试不太会因为这部分挂掉。

社招面试常见的就是Mysql、Redis、Kafka这三个组件,以及RPC框架相关的问题。其他针对个人经历和面试岗位的特点会有所不同,比如我有些大数据方面的经验就会问spark和flink的一些概念和知识;一些特定使用C++的岗位会问C++的知识。准备的时候,如果是完全没用过,最好还是找本书系统的看看;如果工作中经常用,那就网上直接搜一搜“xxx面试题100道”,针对问题复习一下。

以下是我最近面试中遇到的“八股”问题,供大家参考。

Mysql

  1. 聚簇索引、覆盖索引、回表
  2. 4种事务隔离级别,分别解决什么问题
  3. 给了一个表和一些SQL语句,考察Mysql什么时候加读锁、写锁;间隙锁、临键锁如何生效
  4. Mysql binlog有哪几种模式,区别是什么
  5. Mysql 3大日志、作用分别是什么

Redis

  1. Redis常用数据结构
  2. Redis主从同步原理,主从模式和集群模式区别、优缺点
  3. ZSET底层实现原理
  4. Redis对1-99做了什么特殊优化
  5. Redis哈希表什么时候用数组遍历实现?原因是什么?
  6. Redis AOF日志记录什么内容

Kafka

  1. Kafka生产消费过程中哪些情况可能丢数据
  2. Kafka rebalance过程

大数据

  1. Flink数据处理一致性实现原理
  2. Flink如何保证分布式节点checkpoint同步
  3. Flink任务运行机制
  4. Spark任务运行机制
  5. Spark RDD怎么理解
  6. Clickhouse执行快的原因

C++

  1. C++编译有哪些阶段
  2. C++ 宏定义和inline函数区别
  3. C++智能指针
  4. C++构造函数和析构函数能否抛出异常
  5. C++智能指针,shared_ptr引用计数是否线程安全
  6. C++ atomic作用和原理

算法题

现在基本上所有的互联网技术面试都会考察算法题,基本上都要求写出可执行的代码,在面试中占的时间大概在20分钟左右。面试之前还是要多刷刷题,即使之前刷过题,面试前也最好再刷一刷找找手感。以我的经验,基本刷leetcode前200道题里面的easy和medium就可以了,一些比较高频的hard也可以刷一下(比如接雨水和K个一组翻转链表),其中一些题干很长的、考细节实现的题目就不用刷了(比如字符串转换整数)。

算法题这部分很重要,基本上是写不出来必挂。这里说的写出来并不是一定要求实现的是最优解,写出最优解当然是最好的,但有些时候写出一个次优解也是有机会过的。如果面试时遇到没什么思路的问题,可以先尝试实现一个比较简单直接的算法,一方面可以和面试官沟通题目理解是不是正确,另一方面也给自己一些缓冲的时间,思考有没有更好的解法。不管思路是否最优,一定要注意程序要可执行、代码的风格规范(必要的时候可以一边写代码,一边写一点注释)、一些简单的边界要考虑清楚、主动写一些自测用例运行下,这些都是能提升面试印象的方法。

系统设计问题

对于工作2-3年的同学,基本上面试不会遇到系统设计问题;工作在5年左右,如果是要争取阿里P7或字节2-2的岗位的话,基本上在最后一轮面试中都会遇到系统设计题。系统设计题在面试中是置换算法题的时间,所以基本也在20分钟左右,一般有系统设计题就不用写算法题了。

系统设计问题的形式是给定一个常见的功能场景,设计功能的交互、数据存储、数据读写。在这个过程里考察你对存储系统的了解、缓存怎么做、如何保证可靠性和实时性、如何做高可用、如何支持高并发。比如我面试中遇到过下面几个系统设计问题:

  1. IM系统中,如果发送视频、图片需要转码的场景,整个流程怎么设计。
  2. 城市中公交站牌上要展示最近要到的一些车辆信息,系统如何设计。
  3. 设计一个评论系统。
  4. 直播答题系统如何实现的。

其他常见的系统设计场景还有商品秒杀、服务限频、延时消息系统等。系统设计问题我这次准备的时候是看了九章算法里的一个课程,然后B站上也找了一些视频看看,但总体上光靠学提升效果不大,因为1. 课程不可能覆盖所有系统设计问题;2. 课程上给的方案没有实操,也并不会有实际实现下来会遇到什么问题的经验。

所以我还做了另一件事,就是去看我现在工作的业务系统中,其他同事负责的模块是怎么设计的,看他们的文档、代码、监控数据,甚至多问问他们实际遇到过哪些问题,然后举一反三,自己去想生活中常用的一些系统是怎么实现的:比如头条怎么给你推你喜欢的内容、骑小黄车扫码开锁为啥提示你开蓝牙。

不过总体来讲我目前对于系统设计问题也不是特别有经验,有的面试中还是能明显感觉到回答的不太好。后面打算另写文章记录下自己回答系统设计问题的经历,看有没有同学想看吧,想看的人多(可以留言评论)我就快点写^_^。

软性问题

软性问题一般在第三轮面试和HR面试中经常出现。在技术面试中,它置换的是一些项目经历问题的时间,主要是考察作为一个开发在工作中的团队协作能力、领导力、抗压能力。这种问题准备的时候可以回顾下过去几年自己做的比较好的,但没有写在简历上的项目经历,回顾一下当时在哪些方面做的好、哪些方面可以提升。在回答问题的时候,把这些事情和思考当做故事讲出来,一般效果就不会差。

下面是我最近面试中遇到的偏技术的软性问题:

  1. 你在带人过程中做的比较好的地方有哪些?
  2. 你认为要成为一个团队leader,哪些方面比较重要?或者你距离一个leader,有哪些能力需要补足。
  3. 工作中你和你的leader在技术方案上有分歧,你会怎么处理?
  4. 有没有过去某一段工作你认为是不满意的?如果能重来,你会做哪些改进?
  5. 你对后台业务系统服务质量建设有没有什么思考?
  6. 你在某某项目中遇到的最困难的问题是什么,你是如何处理的?

HR面试中,基本全部时间都是软性问题,主要考察的是沟通能力、性格积极向上等方面,这部分回答基本上言之有理即可,想准备的话,可以网上搜搜常见HR面试问题,尝试用自己的经历套一下。

下面是我最近HR面试中遇到的一些软性问题:

  1. 你以后的职业规划是什么?
  2. 如果遇到和别的团队协作,但你现在要做的事情在对方团队优先级不高,你会怎么做?
  3. 你觉得你有哪些优点,有哪些不足?
  4. 你觉得你应聘这个岗位有什么优势?
  5. 你觉得你过去几年的工作里自己有哪些成长?或者可以分为哪几个阶段?

每次面试遇到回答的不好的软性问题,可以总结记录下,想想有没有更好的回答方式,这里没有标准答案,主要是要言之有理,逻辑自洽,如果回答能成体系就更好了(比如总分总形式、递进形式)。

面试最后还有一个反问环节,这个我一般会每轮面试前准备1-2个问题,一般都是关于工作内容、团队发展情况、业务发展情况。如果没啥想问的,也可以一个岗位的每一轮面试都问同样的问题就好了。如果面试官会很耐心的跟你介绍,那面试基本就稳了,如果面试官表现的特别不耐烦,基本就挂了(这种比较少,一般即使要挂你,也会正常跟你沟通完,但还是遇到过)。

总之,面试也是一个不断尝试、复盘、提升的过程,每次面试之后自己哪里回答的好、哪里回答的不好,都在小本本上记录一下,不断复盘、不断提升,下次面试就会比这次面的更好。以上就是我对自己两个月面试经历的回顾和总结,没有面面俱到,但把我认为面试中关键的点都分享了出来,小伙伴们有什么更多想了解的欢迎留言联系。希望大家都能在这个互联网寒冬里工作顺利,拿到满意的offer。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目经历
  • 八股文
    • Mysql
      • Redis
        • Kafka
          • 大数据
            • C++
            • 算法题
            • 系统设计问题
            • 软性问题
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档