zoukankan      html  css  js  c++  java
  • 字节跳动的Android岗面试难吗?应该如何应对?

    个人觉得搞开发,年轻的时候一定要进大厂拼一把。大厂的优势有很多,很多好处都是小厂给不了的:
    更大的平台;
    更好的薪资;
    更多的福利;
    更完善的体制;
    更多的发展机会;
    更多的学习机会;
    ……

    比如字节:工作环境好,技术氛围也好,官僚风气弱,年轻人多有活力,沟通没障碍,薪资待遇好(这是最主要的),也取消了大小周。

    字节难进吗?面试难吗?怎样进字节?下文针对这些问题会一一作答。
    (PS:文章比较长,大家可以收藏慢慢看。)

    字节安卓岗面试难吗?

    这是一个朋友的真实经历:

    一句话总结:进字节的总体感觉不难,已拿offer。


    下面是邀请他做的分享。

    这位朋友是21届硕,去年秋招拿了字节跳动offer。

    当时面了两个组(共见了 8 个面试官),其中有一个组的 HR 表示双方期望没有聊好,每面多久就拒绝了(也可能只是 HR 找个理由婉拒)。然后当天又被另一个组捞起来了,直接面完,几天后就收到 offer 了。

    说一下他的面试过程和一些经验分享吧。

    字节跳动面试最大的特点就是爱考算法题。你随便翻几篇字节跳动面经就会发现考的算法题一般都是Leetcode原题,只是有的时候,你没刷过,不知道那道题是Leetcode上的原题。

    比如下面这道题:

    给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表

    没错,是Leetcode 25. K 个一组翻转链表这道题其实是字节跳动算法高频榜位列第2,数据来自CodeTop高频榜

    再比如这道题

    给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [nums l, nums l+1, ..., nums r-1, nums r] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

    这也是Leetcode原题, 209. 长度最小的子数组

    字节跳动教育、飞书、商业化、视频架构等部门考察过,共计19次。

    下面讲一下大家最关心的问题。

    怎样进字节?

    第一点:心态

    首先一个,心态要好,要相信自己,稳住不要慌。

    第二点:基础知识

    初级所需要的知识

    掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。
    掌握Android 基本布局和控件的属性和使用,常用布局有LinearLayout、RelativeLayout、ConstraintLayout等,控件有TextView、ImageView、RecyclerView、ScrollView等。
    对Android的资源访问使用有基本了解,了解Android针对不同国家、语言、屏幕、API的适配原理。
    掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。
    熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。

    中级所需要的知识

    熟悉SOLID基础设计原则,掌握23种设计模式。
    对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
    对Android架构有基础了解,对apk结构和打包原理有深入了解。
    对于Android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
    熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。
    掌握HandlerAsyncTask原理,熟悉多线程开发。
    对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
    能够熟练掌握开源库的使用,如图片库(GlideFresco)、网络库(VolleyokhttpRetrofit)、工具(DaggerRxJavaEventBus)等,能够对这些常用的库进行二次封装。
    熟悉应用常见的优化方法,避免编写内存泄漏的代码。

    高级所需要的知识

    掌握java高级特性,如JUC、线程池、NIOBIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
    对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
    掌握热修复原理,各大厂商方案的优缺点。
    对于Android事件分发有深入理解,重点掌握触摸事件机制。
    深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。
    深入理解Android动画原理,包括补间动画和属性动画。
    对于Android安全机制有基本认知,理解Android安全原理。
    深入理解端上设计范式思想,如mvcmvpmvvmclean-arch等。
    理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
    对新技术敏感,理解掌握下一代架构dynamic feature等。

    这里把字节跳动等大厂经常问的那些题目进行了综合性的搜集整理(含答案解析)。

    整理目录

    整理内容(部分截图)

    第一章Android 相关

    第二章 性能优化

    第三章 Java 相关

    第四章 Kotlin 相关

    第五章 网络相关

    第六章 插件化&热修复&模块化&组件化&增量更新&Gradle

    第七章.图片相关

    第八章 Flutter 相关

    大家可以扫码找我免费获取,希望这份资料对大家的学习和工作有所帮助。帮助大家进行知识的查漏补缺。
    ↓↓↓↓↓

    请添加图片描述

    第三点:算法

    前面也说过,字节跳动面试最大的特点就是爱考算法题。

    作为一个过来人提醒大家:想要从事计算机技术岗位,在大学本科阶段一定要早早的刷题,打好扎实的算法与数据结构基础。

    时间充足的朋友建议在刷题之前看一些书

    《漫画算法之旅》

    如果你之前没有任何算法基础,这边书很适合你,可以补充数据结构和算法的基础知识,像什么是时间复杂度空间复杂度、查找、排序等。
    如果你有了一定基础了,建议你直接跳到最后面的算法实战部分。

    《剑指 offer》

    非常经典的一本书,学算法的人必刷。但是要注意了,这边书里面的题目是用 C++写的,如果你是 Java 开发人员可能会有点影响。但是要记住学习算法最关键的还是解题思路和方法,用什么语言实现是其次的,如果你时间比较多我是建议你用 Java 语言再实现一遍。

    《labuladong的算法小抄》

    非常推荐!这是一本很新的书,写书前作者在 Github 开源了一个项目,主要讲解 LeetCode 解题套路,Start 总数排名前40。在书的开头讲解了学习算法的基本思维和套路,建议看这边书的同时再配合 leetcode 刷题,疗效非常棒!

    《算法导论》

    要是不推荐这本书是不是显得我有点 low 了,这是一本科班出身的同学必看必学的经典大部头。国外大佬写的,国内翻译的经典之作,虽然是经典但是不建议刚入门算法的同学看,因为看了这本书你可能要放弃算法了,比较难看懂。建议有了一定基础再入手这边书。

    如果你觉得看书比较枯燥,可以推荐你看一些极客时间的专栏,不过是收费,但是质量非常高。
    《数据结构与算法之美》

    这个专栏是文字+语音,作者是王争,前 Google 工程师。他采用最适合工程师的学习方式,不拘泥于某一特定编程语言,从实际开发场景出发,由浅入深教你学习数据结构与算法的方法,帮你搞懂基本概念和核心理论,深入理解算法精髓,帮你提升使用数据结构和算法思维解决问题的能力。

    《算法面试通关40讲》

    这个专栏是视频,作者是覃超,前Facebook工程师。作者会用白板带你一步一步解题,层层深入一环扣一环,每一题还会用多种解题方法。我基本看完了,收获颇多。

    leetcode、书和极客专栏可以并行,学练结合,不要光看不练。

    时间比较急的朋友可以直接根据这份资料刷题

    时间比较紧张的朋友,这边整理了一份《算法刷题宝典》,当时重金购买的,这里免费分享给大家。

    PS:这份刷题资料里面整理的都是重中之重,建议时间充足的朋友也看看。

    有需要的朋友可以直接扫【下方的二维码】找我免费获取全套资料。
    ↓↓↓↓↓

    请添加图片描述

  • 相关阅读:
    docker 会这些也够
    Linux 学会这些基本可以啦
    xxxxxxxxx
    Angular
    mongo
    node
    git clone 解决Permission Denied (publickey)问题
    vue项目如何刷新当前页面
    vue——动态路由以及地址传参
    vue 单页应用点击某个链接,跳转到新页面的方式
  • 原文地址:https://www.cnblogs.com/chengsisi/p/15244568.html
Copyright © 2011-2022 走看看