人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的。

我一听呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手。

人们都说,互联网寒冬来了,这个时候还在大面积招人的公司,必然是牛逼的公司。而这个时候勇敢跳槽的人,必然是牛逼的人。

于是我开始了字节跳动的社招面试。

为了这天,我准备了整整一个星期。面试前一天排老长的队理了个利落的发型,胡子刮得一干二净。穿上崭新的新百伦999,连袜子都是崭新的NB,墨绿色工装裤配酒红色卫衣,外面再搭一件精致的黑色羽绒小坎肩,准时准点出现在电脑屏幕前,准备开始视频面试。

“去面试今日头条,你最好有点心理准备。”

我面试过头条的好兄弟给了我一句忠告。不过邮件对考查内容写的一清二楚,所以一面,我并没有做太强的心理建设,没想到被面试官虐哭了…

下面是面试题:

1.自我介绍

2.熟悉的语言,怎么学习java(核心技术卷一和卷二的区别)jvm虚拟机

3.接口和抽象类区别,如果一个类不需要被继承应该怎么做,final,那在什么情况下我们会使用final修饰类呢…

4.invokeVirtual,invokeInteface,为什么你会觉得抽象类的效率高(我说了查找字节码指令上)如果是单继承和实现一个接口的情况呢,你应该要有自己的理解…

5.HashMap的equals和hashCode()作用,如果不覆写hashcode会怎样

6.Exception和Error的区别是什么,Exception一定要我们自己解决吗

7.泛型了解吗? 那泛型擦除是在编译阶段还是在加载阶段?怎么理解类型擦除的概念(这里我讲了自动装箱,错了应该)

8.泛型里面的extends和super的区别

9.线程,网络请求为什么要新开一个线程

10.ANR有几种情况

11.线程里面可以操作UI吗

12.HandlerThread听过吗,知道他是干嘛的吗

13.Handler原理

14.异步发送的都会到同一个消息队列里面吗

15.线程和handler,Looper,MessageQueue的对应关系

16.怎么处理这个延迟消息,我答了messageQueue里面有一个链表的结构,通过时间排序,到了时间就取出,没到时间就阻塞

17.说说动态代理

18.注解

19.你是怎么理解子网掩码的概念的?

20.Http报文结构,分为那几层,具体到哪一层有什么,发一个报文请求,给你一些东西问你这些东西在报文的哪一个段里面

21.请求方法有什么,Head,Delete。具体问了Post和Get请求,为什么Post会发两次报文?那如果数据段没有数据呢

22.问了一下glide源码相关,还有什么图片请求框架?

23.有看过一些源码库吗

24…Application和Activity在Context的继承树上有何区别?二者使用上有何不同?

数据结构与算法:

1.求二叉树中两个节点之间的最大距离。

2.任意一颗二叉树,求最大节点距离

3.自己实现一个ArrayList,先写十分钟实现一下核心的功能,之后我们再看一下

总结

复盘的时候简直不忍直视,但是又感觉不难,都是一些常规的问题,然后就是一个点一直深究,问到你不会为止,啊头秃…整体情况答得不好,自己知识点也没掌握透彻,一面凉

这是我在某论坛看到的故事,我知道我们很多程序员都有一个大厂梦,但如何针对大厂进行面试准备,很多程序员就显得手足无措了。

我自己做Android开发已经是第6个年头了,毕业后两年,有幸加入到字节跳动这个大家庭。在字节的4年,见证了太多人的来来去去,印象很深一个同事,跳槽阿里薪资直接double,但也看到很多人镀着“大厂”的金四处碰壁,终究还是倒在了技术上!

我自己或许也算是个成功的例子,在4年的时间里从1-1做到了2-2,当然,这背后的“辛酸泪”就留到日后再说。下面我就根据自己一些见解谈谈如何针对大厂进行面试准备。

想达到大厂标准先要搭建知识框架

我们在学技术的时候,如果没有注重搭建知识框架的话,学到后期的话你就会遇到一个问题,就是会感觉到自己之前学习的知识很乱,不成系统,再加上行业技术更新很快,越往后自己学习的知识会越来越多,而之前的学习又是零散的自己没有整理的,你就会感觉自己所掌握的这些知识是散乱的。

就好像很多点,线可能已经连接成了,但是就是组不成一个面。当我们做一个大一点的项目,需要熟练用到很多相关技术面,甚至会用到组件化技术。如果你长期只使用一些常用的技术点,那么你可能还有很长一段时间要待在小公司搬运代码了。

怎样搭建知识框架呢?

这里分享的搭建知识框架两种方式,都是很多技术大佬总结出来的非常好的方式,看你们个人喜好!

第一种:看视频教程来搭建知识框架

这是个通用的方式,可能更加适合那些技术处于初级到中级阶段的朋友,当然,这里我说一点,我发现在很多看视频学习的朋友经常会犯这样的一个错误,就是对视频教程的欲望很强导致的松鼠病,什么意思呢?就是很多朋友到处找视频教程,然后各种囤积,顶多是这个看看,那个看看,感觉这个也好那个也好,于是这个也想看,那个也想看,导致的最终结果就是,视频教程倒是收集了不少,可是没有一个真正的看完过,你说,你是不是就是这样的?(此段话太过属实!)

其实这就是学习技术的一大禁忌,它会严重的欺骗你,让你觉得自己学的很多,实则不仅学的很少,而且还拖慢了你的提升的进度!我告诉你啊,关于视频教程,找一套差不多的就行,就这市面上流传的一些培训班的视频教程,其实都大差不差,只要不是年久失修的那种都行,要知道这就是培训班的啊,所以用来搭建知识框架很合适,找一套就行了,多了没任何好处,现在听我的,看看你收藏的资料里面是不是有好几套同类型的视频教程,听我的,留一套,其他的都删除吧!

记住,只留一套用来搭建知识框架,只留一套,一套,就一套。

第二种:搜索相关知识或路径,自我组织知识框架

这个方式其实要求就比较高了,这要求你要有一定的搜索能力和组织能力,这个方式的核心就是自己去搜索所需要学习的知识点,然后整理组合,然后组织成一个知识框架。

这样说你可能不理解,我举一个例子吧,比如说我们学习Android,如果是按照看视频的方式搭建知识框架,那我们只需要找一套视频教程,然后从前往后看,根据所讲建立相应的文件夹就可以形成我们的知识框架。

但是第二种方式不是这样的,因为没有了视频教程作为参考,我们就需要自己去搜索,比如去搜索“学习Android应该掌握哪些知识点?”,“Android需要学习什么”,“Android的学习路径是什么”,然后你就会得到很多的答案,就会有很多人告诉你先学什么,再学什么等,然后多找几个答案,你就会得出一个学习路线,然后按照这个路线建立相应的文件夹,之后再按照文件夹的顺序去逐个学习,可以找单独的视频教程看,也可以上网搜系列博客来学习,这个就自由的多了。

如果你觉得网上搜索很费劲的话,我可以分享你一套字节跳动内部传送的Android进阶指南)

《高级UI》

UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。

不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!

《Framework精编内核解析》

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

《360°全方面性能调优》

内容主要包含一下几点:

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

4、项目实战

  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

《Android第三方框架》

本篇内容要点(1042页)

  • 热修复设计
  • 插件化
  • 组件化框架设计
  • 图片加载框架
  • 网络请求框架
  • RXJava 响应式编程框架设计
  • IOC 架构设计
  • Android架构组件Jetpack

《NDK模块开发》

NDK是原生开发工具包,这套工具允许Android使用C/C++代码,并提供了众多的平台库。

主要内容包含:

  • NDK 模块开发
  • JNI 模块
  • Native 开发工具
  • Linux 编程
  • 底层图片处理
  • 音视频开发
  • 机器学习

《Jetpack架构组件从入门到精通》

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

《Flutter技术进阶》

  • Flutter跨平台开发概述
  • Windows中Flutter开发环境搭建
  • 编写你的第一个Flutter APP
  • Flutter Dart语言系统入门

《2020大厂面试高频知识点》

一、图片
二、网络和安全机制
三、数据库
四、插件化、模块化、组件化、热修复、增量更新、Gradle
五、架构设计和设计模式
六、性能优化
七、Android Framework
八、Android优秀三方库源码


由于篇幅限制,这里只能展示部分内容,朋友们如果需要这份完整版的PDF资料合集,微信扫描下方CSDN官方二维码【免费获取】。

然后我必须强调几点:

  1. 这个搭建知识框架可不是说你整理好要学习的知识顺序,然后建立相应的文件夹就行了,这所包含的知识你是要真的去学的!

  2. 学习的时候你一定要记笔记,一定要记笔记,这个很重要

  3. 最终你的知识框架应该是一个完善的层级文件夹,每个文件夹下有相应知识的学习笔记

这样你的知识框架才算真正的搭建完成!至此,你向Android架构师迈出了最关键的一步。

有了自己的知识框架一定可以在面试中游刃有余了,最后祝大家面试顺利,都能顺利拿到满意的offer!

准备了一周就去字节跳动面试,结果一面就被虐哭了------面试官做个人吧相关推荐

  1. 入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

    前言 先说一下自己的个人情况,18届应届生,通过校招进入到了蘑菇街,然后一待就待了差不多2年多的时间,可惜的是今年4月份受疫情影响遇到了大裁员,而我也是其中一员.好在早有预感,提前做了准备,之前一直想 ...

  2. 搞不懂为啥都要去字节跳动,太心累了。。。

    我有个朋友,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了算法原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给定题编程,来考察 ...

  3. 年末去字节跳动面试,居然被面试官问的哑口无言,原因竟然是这个!!!

    目录 前言 那些年凉掉的面筋 二面字节的朋友 面经分享 一面 二面 三面 总结 性能优化这个问题难吗? 最后 前言 大家应该看过不少人分享的面试成功的面经,是不是觉得自己"说不定也可以&qu ...

  4. 阿里、百度、字节跳动、京东、地平线等计算机视觉实习生面试经历分析,已成功上岸!...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|AI算法与图像处理 来源:https://www.now ...

  5. 字节跳动28岁程序员退休:我只想做一个自由的“废物”

    如何看待28岁的郭宇从字节跳动退休? 郭宇,是谁?又是怎么做到28岁退休的? 为了解开这个疑惑,我查看了他的微博. 其中,他的置顶写了这样的信息: 从高中开始程序员人生,大三收到支付宝实习offer: ...

  6. 字节跳动「突袭」美团,抖音竟然要做外卖

    loonggg 读完需要 5 分钟 速读仅需 2 分钟 大家好,我是校长. 没想到吧?抖音竟然要做外卖了,据说在内测了,叫:「心动外卖」. 01 字节跳动进军外卖 据悉字节跳动旗下的抖音于近期成立了一 ...

  7. 成功入职字节跳动的小姐姐告诉你,Android面试吃透这一篇就没有拿不到的offer!

    文章目录 写在前面 来,发车了! 1. 战略定位:Android面试都会问些什么? 2. 运筹帷幄:我需要形成什么样的知识体系? 3. 披襟斩将:我需要掌握多少知识? 4. 锦上添花:面试过程中适用的 ...

  8. 阿里、百度、字节跳动、京东、地平线等计算机视觉实习生面试经历分析,已成功上岸!

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 来源:https://www.nowcoder.com/discuss/192224 本文已授权,未经允许,不得二次 ...

  9. 2020Android大厂高频面试题(字节跳动+阿里+华为+小米等20家大厂面试真题)附面经!

    Android大厂高频面试题 1.        下列哪些语句关于内存回收的说明是正确的? ( )  A. 程序员必须创建一个线程来释放内存   B.内存回收程序负责释放无用内存    C.内存回收程 ...

最新文章

  1. 从JavaScript函数重名看其初始化方式
  2. REBOOT Reload - 可安装在优盘的 Windows 和 DOS 启动盘
  3. 一张纸厚度是多少毫米_大洼20毫米水泥纤维板多少钱一张追求至善
  4. echarts x轴像直尺一样设置刻度_MATLAB作图实例:6:指定轴刻度值和标签
  5. Hibernate的核心组件简单介绍
  6. google erath api v3 与v2版本在定位方面的区别
  7. CH341SER USB转串口64位驱动
  8. 去除趋势杀软的退出密码
  9. 利用Clonezilla备份还原Linux系统
  10. 手机测试用例-多媒体测试用例
  11. Deep Multimodal Representation Learning(深度多模态表示学习)
  12. 交换机、路由器、服务器组网
  13. 安装python的时候遇到的问题,无法安装bz2modules等
  14. 【实战篇】——keras合并多个模型
  15. 微信小程序预览无法播放视频
  16. NPDP知识推送-第一章新产品开发战略(1)
  17. 工业以太网交换机的光口和电口有什么区别?
  18. oracle中的cursor属性,Oracle Cursors语法总结
  19. 中国果汁饮料行业营销状况与竞争趋势预测报告(2022-2027年)
  20. 数字化医院中智慧医疗的具体应用

热门文章

  1. 高新技术企业申报属于哪个部门?
  2. ZYNQ PS及MicroBlaze访问FPGA端BRAM实战
  3. win mysql5.7 msi_win10 安装 mysql 5.7 msi版的教程图文详解
  4. python后端开发流程_2019 Python后端开发面经总结
  5. SEO站长常用的查询工具
  6. 解C#中的委托(Deligate)
  7. 记一次异常Caused by: java.lang.ClassNotFoundException: cn.exrick.xboot.core.entity.XXX
  8. Bsin-PaaS:开源的企业级开发框架
  9. 电子商务进农村 惠农网农村电商项目 每周精彩回顾(第十二期)
  10. 2021年G1工业锅炉司炉答案解析及G1工业锅炉司炉考试资料