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

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

xsobi 2024-12-11 17:48 1 浏览

阅读前请点击右上角“关注”,每天免费获取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. 谈心算法

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

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

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

视频具体内容如下:

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



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

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

相关推荐

好用的云函数!后端低代码接口开发,零基础编写API接口

前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...

快速上手:Windows 平台上 cURL 命令的使用方法

在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...

使用 Golang net/http 包:基础入门与实战

简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...

#小白接口# 使用云函数,人人都能编写和发布自己的API接口

你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...

极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...

window使用curl命令的注意事项 curl命令用法

cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...

Linux 系统curl命令使用详解 linuxctrl

curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...

Tornado 入门:初学者指南 tornados

Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...

PHP Curl的简单使用 php curl formdata

本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...

Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介

本章涵盖使用Actix提供静态网页...

我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些

这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...

linux文件下载、服务器交互(curl)

基础环境curl命令描述...

curl简单使用 curl sh

1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...

常用linux命令:curl 常用linux命令大全

//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...

三十七,Web渗透提高班之hack the box在线靶场注册及入门知识

一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...