美文网首页Android开发Android开发经验谈Android技术知识
金三银四:我带你去BAT面试现场去看别人“面试被拒”

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

作者: Alvin老师 | 来源:发表于2020-03-03 12:33 被阅读0次

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

    人生找工作就是一场战役,让我认识到了现实的残酷,从去年七月底开始投递度娘的那一刻开始,我的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前沿技术,底层源码等相关面试问题也作出重点解读!

    需要上述所有视频的朋友,可以点击关注+点赞+私信学习前往免费领取!
    也可以直接前往GitHub地址领取!https://github.com/Android-Alvin/read-me**

    分享不易,喜欢的朋友,别忘了关注+点赞哈


    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/xkfqlhtx.html