如何准备国内一流互联网公司面试,如百度、阿里、腾讯、字节等

入职新公司快半年了,今天,我就想和大家聊聊,关于找工作、面试的一些心得与体会。说实话,在这次找工作之前,我面试找工作的经历并不丰富,反而是当面试官的次数更多。所以呢,这次换工作,我把国内一二线公司都面了一遍,也算是弥补了自己这方面经验的不足吧。

「国内公司」比如百度、阿里、腾讯、字节,它们都是一流的互联网公司.

如果你最近也想面试:以上国内这些大厂,相信这篇文章可以给你一定的帮助。
在这里插入图片描述
我们聊聊国内公司。

国内公司

国内公司,包含传统互联网企业,还有一些国企、央企。

面试流程

从我的面试经验来说,国内公司大致的流程是这样的。

  • HR 沟通:顺带约下一轮的时间;
  • 笔试:对于社招而言,互联网公司笔试比较少,但国企、央企还比较常见。
  • 一轮技术面试:这一轮的面试官,一般都是团队内比较资深的工程师,技术细节的问题偏多,最后,一般还会预留20分钟左右的时间,出一道算法题, 大概是 LeetCode Medium 级别。
  • 二轮技术面试:这一轮的面试官,一般是团队直属 Leader。具体的内容可能因人而异,有些面试官,喜欢在一个问题上持续深挖,试探你的「技术深度」;有些面试官,喜欢跟你聊行业动向,考察你的「知识广度」。当然,大部分情况来说,两者都会考察。
  • 三轮技术面试(终面):这一轮的面试官,一般是 Leader 的 Leader。从我的经验上来看,这一轮主要是考察候选人的「潜力」。那么,如何判断候选人的潜力大不大呢?答案就是:「基础」、「品性」。这一轮面试聊的内容,可能时而比较抽象,时而比较底层。
  • HR 面试:到了这一步,你的技术能力就已经得到认可了。剩下的,就是其他方面能力的考察了。通常来说,只要你没有诚信之类的问题,HR 是不会轻易拒你的。

那么,面试国内的大厂,我做了哪些准备呢?

面试准备

每个技术领域的知识,其实都是模块化的,我把它们分为以下几个部分:

算法数据结构:由于平时工作中用的并不多,所以,有必要在面试之前重新补一补算法和数据结构。

具体,我的做法是这样的:

  • 数据结构:关闭 IDE 的语法提示,用主力语言(我用的 Kotlin)实现一遍常见的数据结构:Array、List、Stack、Queue、Map 等等;
  • 算法:同样的,再把常见的算法自己手写一遍:常见的7种排序算法、3种字符串搜索算法、双指针、多指针、回溯,等等。
  • 刷题:对于国内公司的面试准备,掌握 LeetCode 上 Top 200 的高频题就已经可以轻松应对了。注意,这里我说的是“掌握”,单纯只是刷一遍是不太可能达到这种境界的。我喜欢用不同的思路,不同的编程思想,从不同的角度,去剖析同一道算法题。

除了数据结构与算法之外,还需要注意:计算机基础。

是的,你没看错,社招同样需要花时间补一补计算机的基础知识。比如:计算机网络、操作系统、加密算法等等。对于大部分工程师而言,Http、Https、Linux 系统、编解码,都还是需要有一些基本认识的。

最后,也是最重要的:专业知识

比如,我是 Android 工程师,面试之前,我会花很长时间补专业知识,从基础的到高阶的。目前市面上对高级 Android 工程师的要求其实不低。

  • 基础知识:最基本的,四大组件、生命周期、启动模式、事件分发、自定义View,这些都要烂熟于心。
  • 性能优化:Android 性能优化,这个方向的水其实很深。但对于普通的 Android 工程师而言,掌握一些基础的排查工具,以及基本的性能优化套路,还是很有必要的。如果是大厂专门做性能优化方向的工程师,往往需要深入 Dalvik、ART 虚拟机去做优化。
  • Framework:这部分,也许很多人会把它当作八股文来看待,比如: App 启动流程、Binder 机制,等等。我自己在准备的过程中,并不会强迫自己记住 Framework 层的具体细节,更多的,是去理解它背后的设计思想。工作中遇到问题的时候,去网上查源码,具体情况具体分析即可。
  • 工程架构:在准备这个部分的时候,我主要是去读了一下主流的开源项目,并尝试自己手写实现出它们的 Kotlin 版本。在这个过程中,我不仅对项目本身有了更深的理解,对 Java 和 Kotlin 也有了更深的认识。
  • 新技术:每个技术领域,一定是持续发展的。比如说,Android 领域,就有:Kotlin、协程、KMM、Compose 等等。不过,有趣的是,几乎没有面试官问我这方面的知识,我猜他们都很相信我吧。

结尾

这次面试准备,前前后后我花费了将近4个月,也总结、收集了一些文档资料,主要涵盖以下几个方面:

架构师基础、性能优化、插件化、Framework、Kotlin、协程、Compose等等;

一、架构师筑基必备技能

1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……

在这里插入图片描述

二、Android百大框架源码解析

1.Retrofit 2.0源码解析
2.Okhttp3源码解析
3.ButterKnife源码解析
4.MPAndroidChart 源码解析
5.Glide源码解析
6.Leakcanary 源码解析
7.Universal-lmage-Loader源码解析
8.EventBus 3.0源码解析
9.zxing源码分析
10.Picasso源码解析
11.LottieAndroid使用详解及源码解析
12.Fresco 源码分析——图片加载流程

在这里插入图片描述

三、Android性能优化实战解析

  • 腾讯Bugly:对字符串匹配算法的一点理解
  • 爱奇艺:安卓APP崩溃捕获方案——xCrash
  • 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
  • 百度APP技术:Android H5首屏优化实践
  • 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  • 携程:从智行 Android 项目看组件化架构实践
  • 网易新闻构建优化:如何让你的构建速度“势如闪电”?

在这里插入图片描述

四、高级kotlin强化实战

1、Kotlin入门教程
2、Kotlin 实战避坑指南
3、项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始

  • Kotlin 写 Gradle 脚本是一种什么体验?

  • Kotlin 编程的三重境界

  • Kotlin 高阶函数

  • Kotlin 泛型

  • Kotlin 扩展

  • Kotlin 委托

  • 协程“不为人知”的调试技巧

  • 图解协程:suspend

在这里插入图片描述

五、Android高级UI开源框架进阶解密

1.SmartRefreshLayout的使用
2.Android之PullToRefresh控件源码解析
3.Android-PullToRefresh下拉刷新库基本用法
4.LoadSir-高效易用的加载反馈页管理框架
5.Android通用LoadingView加载框架详解
6.MPAndroidChart实现LineChart(折线图)
7.hellocharts-android使用指南
8.SmartTable使用指南
9.开源项目android-uitableview介绍
10.ExcelPanel 使用指南
11.Android开源项目SlidingMenu深切解析
12.MaterialDrawer使用指南
在这里插入图片描述

六、NDK模块开发

1、NDK 模块开发
2、JNI 模块
3、Native 开发工具
4、Linux 编程
5、底层图片处理
6、音视频开发
7、机器学习

在这里插入图片描述

七、Flutter技术进阶

1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter开发环境搭建和调试
5、Dart语法篇之基础语法(一)
6、Dart语法篇之集合的使用与源码解析(二)
7、Dart语法篇之集合操作符函数与源码分析(三)

在这里插入图片描述

八、微信小程序开发

1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战……

在这里插入图片描述

全套视频资料:

一、面试合集
在这里插入图片描述
二、源码解析合集

在这里插入图片描述
三、开源框架合集

在这里插入图片描述
欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取【保证100%免费】↓↓↓

猜你喜欢

转载自blog.csdn.net/m0_59614665/article/details/127126255
今日推荐