百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

金三银四:我带你去BAT面试现场去看别人“面试被拒”

liuian 2025-04-01 19:47 34 浏览

阅读前请点击右上角“关注”,每天免费获取Android知识解析及面试解答。Android架构解析,只做职场干货,完全免费分享!

在这本该属于程序员的“金三银四”面试跳槽旺季,因为一场突如其来的“新冠肺炎”而蒙上了一层阴影。

人生找工作就是一场战役,让我认识到了现实的残酷,从去年七月底开始投递度娘的那一刻开始,我的BAT面试之路也正式开始,直到现在也没有拿到一个offer,很多次本以为自己稳了,结果就是挂掉,心态很崩。这期间起起伏伏,还有自己的不争气,我只能说,这个春天有点冷!

百度Android凉经


一面:

  1. OSI模式,各层介绍
  2. 域名转换IP
  3. HTTP,HTTPs
  4. 加密
  5. 线程进程区别
  6. 死锁
  7. 不同步问题
  8. B树,B+树
  9. 编译,链接
  10. 树的先序中序后序

二面:

  1. 项目(很久)
  2. activity启动模式
  3. 进程通信
  4. 动画
  5. 线程进程区别
  6. 调度

三面:

  1. 项目中承担角色
  2. 项目中如何沟通协作
  3. 项目中的问题
  4. 项目规划什么的

总结:面试中的面试官,一面很温柔,二面有点严厉,三面正常,项目经验缺乏,没答好。(只能心里许愿求offer)

网易有道(内推)


一面:

  1. http1.0和1.1区别?
  2. 范式是什么?
  3. Session和Cookie的区别?
  4. 讲一讲锁,锁是怎么产生的?
  5. hashmap和hashtable区别?
  6. stringbuffer和stringbuilder的区别?
  7. osi七层模型是哪七层?
  8. https和http的区别?

总结:第一次大厂面试,发现大厂更着重底层和基础原理,一面基本面试里数据库,计算机网络,操作系统还有Java的基础,Android知识基本不问。

美团点评(内推)


一面:

  1. 为什么用单例?
  2. Java里public、private、default、protected 区别是什么?
  3. ArrayList和LinkedList的区别?
  4. Java的线程解释一下?
  5. Java的垃圾回收解释一下?
  6. Activity的生命周期?
  7. Activity中页面A跳转到页面B这其中产生的生命周期是怎么样的?
  8. Android的分发机制讲解一下?
  9. Android有什么方法可以更新UI?
  10. 为什么会产生oor?
  11. ANR是怎么产生的?
  12. 为什么要用Fragment?
  13. Android有哪些布局?
  14. 讲解一下ListView的原理?
  15. 手写一个排序算法。
  16. 手写一个单例模式。

总结:面试官一来没有自我介绍直接手撕一道算法题,奈何算法太差,导致时间做的有一点点久,面试官总结基础不错,算法还需要加强,这就是我被发感谢信的原因吧(哭)。

永辉云创(拉勾招聘投递)

一面:

  1. Fragment怎么把数据传递到Activity?
  2. Activity怎么把数据传递到Fragment?
  3. Fragment的生命周期?
  4. Android中一般用什么方式进行异步操作?
  5. 有学过Kotlin吗?
  6. ListView和RecyclerView有什么区别?

总结:创业公司相比大厂来说,更看重项目实践经验,基础的方面问的很少,一开始就手撕项目,项目中主要是用到Fragment才会问相关的问题。

二面:

  1. Fluuter用过哪些组件?
  2. Fluuter里静态组件怎么刷新数据?
  3. 怎么设置控件的Padding?
  4. Container可以设置padding吗?

总结:永辉云创的技术栈很新,都是用的最新出的技术和框架之类的,所以一般都是问这方面的问题。

猫眼(内推)

一面:

  1. 组件化设计,业务模块怎么获取到核心模块的内容?
  2. 单Activity+多Fragment的新架构了解吗?
  3. 一个下载业务模块你会怎么设计?
  4. 了解过RxJava吗?
  5. 用过哪些图片框架,了解其中的原理吗?
  6. 你用过okhttp,其中的实现原理和里面的拦截器实现能解释下吗?
  7. Handler的原理解释下?
  8. Looper和Handler是只能有一个吗?
  9. HandlerThread和ThreadLocal了解吗?
  10. IntentService的原理解释下?
  11. Fluuter用过哪些组件?
  12. Fluuter的WebView你是怎么设计的?
  13. asyncTask的使用注意事项知道吗?
  14. Java里用过哪些集合,他们的时间复杂度分别是多少?
  15. HashMap的底层实现原理?
  16. hashCode有什么用的,你一般怎么计算的?
  17. Hash冲突是什么解释一下?
  18. hashCode和equals的区别是什么?
  19. 一个数插入到第k个位置的时间复杂度是多少,插入到链表呢?
  20. 快速排序和二分查找的时间复杂度是多少?
  21. 写一个双重检查单例。synchronize和volatile分别有什么用?
  22. 你了解锁吗?
  23. 抽象类和接口有什么区别?
  24. 分发的原理?
  25. 了解过滑动冲突吗?

总结:题目质量很高,一开始没有自我介绍,直接撕项目,全程狂轰乱炸没有停过的,说的嘴巴都要干了,面试完也没有反问环节,貌似面试官也挺忙的,然后就给我发了感谢信(o(╥﹏╥)o)。

字节跳动 Android 开发岗面经


一面:

  1. 算法题 两个栈实现队列
  2. 算法题 输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了 O(n)的时间复杂度能实现)
  3. 写一个单例(自己写一种就行)
  4. ActivityA -> Activity B -> Activity A
  5. Activity A 启动模式为 singleTask
  6. Activity B 启动模式为常规模式
  7. 问 A 启动 B,B 又启动 A 的生命周期调用顺序?
  8. 你刚才提到 onsaveinstancestate() ,说一下调用时机,它用来干什么的。
  9. onsaveinstancestate() 保存的那个参数叫什么?Bundle 里面都放一些什么东西?怎么实现序列化?Parcelable 和 Serializable 有什么区别?
  10. Bundle 。
  11. 数组和链表的区别
  12. HashMap 的结构以及原理
  13. 我看你简历上写了 retrofit,你能说一下它是做什么的,如果知道基本框架也说一下
  14. 了解 View 的绘制机制吗,能说一下吗
  15. 我看你项目里用的 Fragment 能说一下 Fragment A 启动了 Fragment B,Fragment B 中按下返回键只退出 Fragment B 怎么实现。
  16. 你还有什么要问的吗?

二面:

  1. 算法题 一个字符串,求最长没有重复字符的字符串长度
  2. string stringbuffer 和 stringbuilder 区别
  3. final finally finalize区别
  4. 数组和链表的区别
  5. HashMap 了解过吗
  6. Tcp 三次握手四次挥手
  7. get 与 post 的区别
  8. synchronized 的作用
  9. 你知道哪些设计模式
  10. Android 进程通信的方法
  11. 那你能说一下 Intent 是怎么进程通信的
  12. 内存泄漏有哪几种情况
  13. 有什么要问的吗

总结:同样也是算法问题,导致时间做的有一点点久,面试官总结基础不错,算法还需要加强,这就是我被发感谢信的原因吧(哭)。

最后

看到上述网友们分享给我的面试凉经,而我在大厂和小厂都待过,也面试过很多人。一些朋友就“如何进BAT大厂?”这个问题找我咨询时,尤其是一些学生朋友在找我聊职业规划和职场困惑时,我给的建议就是,如果你是应届生或者工作年限较短(五年以下),那一定要找个机会去大厂工作几年。

进入大厂的难点

虽然大厂很好,但是进大厂对个人资质、个人素养和技术水平都有一定的要求,并不是每个人都有机会的。

无论是应届生还是工作几年的人,一般都需要通过技术面试才能进入大厂。那么大厂技术面试一般会哪些问题呢?除了少部分相关的技术外,重头戏都是算法与数据结构。从上述网友分享的大厂面试凉经来看,也确实是挂在了算法上面。真的很可惜!

学好算法和数据结构,无论对从技术水平长远的发展来说,还是对个人逻辑思维锻炼都是大有裨益的。

国内的大厂面试,基本上大多数问题都是各种算法和数据结构题,而国外的大厂,像 Google、Facebook、微软等等,基本上百分之百是算法和数据结构题目。

很多应届毕业生横扫各大大厂 Offer,很大一部分原因是因为算法和数据结构掌握的好,当然薪资也非常可观。社会人士虽然在面试大厂时对相关的项目有一定的工作经验,没有像应届生要求那么高,但是最基础最常用的算法和数据结构还是要熟悉的。

说了这么多,那么大厂面试到底要求哪些算法和数据结构知识?我根据我面试的经验,给大家整理了一个清单:

  1. 算法面试到底是什么鬼?
  2. 面试中的复杂度分析
  3. 数组中的问题其实最常见
  4. 查找表相关问题
  5. 在链表中穿针引线
  6. 栈、队列、优先队列
  7. 二叉树和递归
  8. 递归和回溯法
  9. 动态规划基础
  10. 谈心算法

因为我能讲课,之前就一直筹备着,就把上面的清单的内容全部录制成视频,前前后后大概录制了一百多个视频,全部上传到百度网盘,免费供大家观看,从去年九月份之后就一直在录制视频和准备文档,大概花了近半年的时间。

玩转算法面试 leetcode

需要的朋友,可以点击关注+转发+私信**学习**前往免费领取!

当然还有部分企业对有一定工作年限的员工除了算法和数据结构外,提出了更高的要求,比如Android前沿技术和项目经验,同样的给大家整理了一个清单:

视频具体内容如下:

  • 第1章 课程介绍
  • 第2章 一线互联网公司初中高Android开发工程师的技能要求
  • 第3章 Android基础相关面试题
  • 第4章 异步消息处理机制相关面试问题
  • 第5章 View相关面试问题
  • 第6章 Android项目构建相关面试问题
  • 第7章 开源框架相关面试问题
  • 第8章 Android异常与性能优化相关面试问题
  • 第9章 热门前沿知识相关面试问题


BAT大牛解密Android面试


第6章 Android项目构建相关面试问题

视频围绕“BAT大牛解密Android面试?”的主题,内容由浅入深,同时,对于项目专题、开源框架、Android前沿技术,底层源码等相关面试问题也作出重点解读!

需要上述所有视频的朋友,可以点击关注+转发+私信**学习**前往免费领取!

相关推荐

教你把多个视频合并成一个视频的方法

一.情况介绍当你有一个m3u8文件和一个目录,目录中有连续的视频片段,这些片段可以连成一段完整的视频。m3u8文件打开后像这样:m3u8文件,可以理解为播放列表,里面是播放视频片段的顺序。视频片段像这...

零代码编程:用kimichat合并一个文件夹下的多个文件

一个文件夹里面有很多个srt字幕文件,如何借助kimichat来自动批量合并呢?在kimichat对话框中输入提示词:你是一个Python编程专家,完成如下的编程任务:这个文件夹:D:\downloa...

Java APT_java APT 生成代码

JavaAPT(AnnotationProcessingTool)是一种在Java编译阶段处理注解的工具。APT会在编译阶段扫描源代码中的注解,并根据这些注解生成代码、资源文件或其他输出,...

Unit Runtime:一键运行 AI 生成的代码,或许将成为你的复制 + 粘贴神器

在我们构建了UnitMesh架构之后,以及对应的demo之后,便着手于实现UnitMesh架构。于是,我们就继续开始UnitRuntime,以用于直接运行AI生成的代码。PS:...

挣脱臃肿的枷锁:为什么说Vert.x是Java开发者手中的一柄利剑?

如果你是一名Java开发者,那么你的职业生涯几乎无法避开Spring。它如同一位德高望重的老国王,统治着企业级应用开发的大片疆土。SpringBoot的约定大于配置、SpringCloud的微服务...

五年后,谷歌还在全力以赴发展 Kotlin

作者|FredericLardinois译者|Sambodhi策划|Tina自2017年谷歌I/O全球开发者大会上,谷歌首次宣布将Kotlin(JetBrains开发的Ja...

kotlin和java开发哪个好,优缺点对比

Kotlin和Java都是常见的编程语言,它们有各自的优缺点。Kotlin的优点:简洁:Kotlin程序相对于Java程序更简洁,可以减少代码量。安全:Kotlin在类型系统和空值安全...

移动端架构模式全景解析:从MVC到MVVM,如何选择最佳设计方案?

掌握不同架构模式的精髓,是构建可维护、可测试且高效移动应用的关键。在移动应用开发中,选择合适的软件架构模式对项目的可维护性、可测试性和团队协作效率至关重要。随着应用复杂度的增加,一个良好的架构能够帮助...

颜值非常高的XShell替代工具Termora,不一样的使用体验!

Termora是一款面向开发者和运维人员的跨平台SSH终端与文件管理工具,支持Windows、macOS及Linux系统,通过一体化界面简化远程服务器管理流程。其核心定位是解决多平台环境下远程连接、文...

预处理的底层原理和预处理编译运行异常的解决方案

若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好![Mac-10.7.1LionIntel-based]Q:预处理到底干了什么事情?A:预处理,顾名思义,预先做的处理。源代码中...

为“架构”再建个模:如何用代码描述软件架构?

在架构治理平台ArchGuard中,为了实现对架构的治理,我们需要代码+模型描述所要处理的内容和数据。所以,在ArchGuard中,我们有了代码的模型、依赖的模型、变更的模型等,剩下的两个...

深度解析:Google Gemma 3n —— 移动优先的轻量多模态大模型

2025年6月,Google正式发布了Gemma3n,这是一款能够在2GB内存环境下运行的轻量级多模态大模型。它延续了Gemma家族的开源基因,同时在架构设计上大幅优化,目标是让...

比分网开发技术栈与功能详解_比分网有哪些

一、核心功能模块一个基本的比分网通常包含以下模块:首页/总览实时比分看板:滚动展示所有正在进行的比赛,包含比分、比赛时间、红黄牌等关键信息。热门赛事/焦点战:突出显示重要的、关注度高的比赛。赛事导航...

设计模式之-生成器_一键生成设计

一、【概念定义】——“分步构建复杂对象,隐藏创建细节”生成器模式(BuilderPattern):一种“分步构建型”创建型设计模式,它将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建...

构建第一个 Kotlin Android 应用_kotlin简介

第一步:安装AndroidStudio(推荐IDE)AndroidStudio是官方推荐的Android开发集成开发环境(IDE),内置对Kotlin的完整支持。1.下载And...