美文网首页Android技术知识
万万没想到这么一跳,薪资也涨了40%多!

万万没想到这么一跳,薪资也涨了40%多!

作者: 搬砖小老弟 | 来源:发表于2022-04-22 21:00 被阅读0次

    作者:赵无极

    前言

    首先说一下,笔者曾经也只是尘世间一个迷途小开发,二流程序员。可能这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,耗时一个月时间面试+复习+总结,最终拿到了自己喜欢公司offer(字节跳动Android开发岗,薪资也涨了40%多),对我来说已经很满意了。

    出来社会摸爬滚打四年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。

    说下我的个人背景吧

    • 双非本科,计算机应用专业。
    • 工作四年,都是小厂,小组最多没超过4个人
    • 算法基础一丢丢(翻书‘马冬梅’,合书‘什么梅’)
    • 英语水平半文盲
    • 有一个自己常年维护的博客,GitHub所有项目加起来有200多个star
    • 懂一点应用层方面的音视频编解码知识

    面试过程

    一面:

    1、首先是自我介绍(需要注意的地方:说有亮点的、跳槽原因,从各个点尽力彰显自己优势、技术特长)
    2、手写代码:计算View树上所有view的数量,参数ViewGroup(本质上就是数据结构多叉树递归层序遍历+Android View基本api调用)

    Android相关
    3、主线程Looper一直循环查消息为何没卡主线程?
    4、RecyclerView相对ListView区别?
    5、Bitmap resize相关,设置option,decode
    6、用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他Dex调用、关联?Odex优化点在于什么?
    7、Dalvik和Art虚拟机区别?
    8、多渠道打包如何实现(Flavor、Dimension应用)?从母包生出渠道包实现方法?渠道标识替换原理?
    9、Android打包哪些类型文件不能混淆?
    10、Retrofit主要实现机制?Retrofit的作用、原理
    11、动态代理静态代理区别?
    12、模块化怎么做?怎么设计?接口发现暴漏怎么做?基于什么基本思想?
    13、MVC、MVP、MVVM应用和彼此本质区别?

    二面:

    1、Glide缓存特点
    2、问了擅长哪个方向?回答UI动画,所以就问UI相关的
    (1)launcher应用抽屉,之前有个毛玻璃效果背景,从系统ROM角度说下怎么做?
    (2)实时的睡眠水面倒影效果怎么做? 实时更新的UI性能如何保证?
    (3)UI基础:Measure、Layout、draw大流程、绘制顺序,FlowLayout怎么实现?
    3、算法题:两个线程分别持续打印奇数和偶数,实现两个线程的交替打印(从小到大)
    4、模块化、工程化架构思想

    三面:

    1、设计个IM客户端以及数据库架构,类似微信,偏上层业务部分的会话、联系人、通知、
    2、公众号如何存、分几张表,架构每一层都是什么,互相怎么交互工作?

    hr面

    大概问了下之前的面试体验,手上是否有其他offer,自我介绍等

    总结

    感觉问得不偏基础,有些感觉必考基础题没问,第一感觉还是不难的,之后hr就直接谈到了薪资问题。说到这里就觉得这个offer是稳了。

    只有不断地努力,不停的学习,才能对你的工作和面试当中带来帮助,学习之路,犹如逆水行舟, 不进则退, 下面分享的正是我的学习方法

    • 准备

    这是最辛苦的阶段,你不仅要把日常的工作做好,还要开始着手准备刷题、基础知识准备以及高阶知识的准备,除此之外我还对英语进行了一些准备,本来英语就是半文盲,由于不管是想去外企、出国以及看英文的文档,英语都是必不可少的,英语在我们的日常生活中也越来越重要,我们要,整个阶段大概持续了4个多月。

    其实每一次跳槽,都是对这几年工作的一个梳理和总结,虽然大家都明白“面试造火箭、进去拧螺丝”的道理,对于公司而言,这是筛选人才的一个方式,毕竟人是第一生产力,只要有优秀的人才,那么造出的火箭才可能“一飞冲天”。对于个人而言,如果公司里同事优秀的人,那么你肯定也不会差,我们肯定更希望和优秀的人一起共事。

    (一)调整自己的心态,正确面对得失

    面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。

    (二)提升技术,扩宽知识

    对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?

    以下是我个人的一些做法,希望可以给各位提供一些帮助:

    • 准备简历
      简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历以外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。

    优质简历范本:

    推荐分享

    他之前在做面试准备的时候,从网上查找收集整理了一些 Android 开发相关的学习文档、面试题、Android 核心笔记等等文档,进行算题复习 Android 相关的知识,通过这次的面试效果检测,也体验出了结果。这次面试能通过一半原因是自己的技术还过的去,另一半的原因就是吸收了这些学习文档精华。

    所以我想拿出来跟大家进行分享,希望能帮助到大家学习提升,在面试中能顺利通过。如有需要参考的可以直接去我 GitHub 查阅

    GitHub地址:
    https://github.com/733gh/Android-T3
    

    相关文章

      网友评论

        本文标题:万万没想到这么一跳,薪资也涨了40%多!

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