• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
上马定江山
帮助1

学新通

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

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

学新通

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

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

为了这天,我准备了整整一个星期。面试前一天排老长的队理了个利落的发型,胡子刮得一干二净。穿上崭新的新百伦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优秀三方库源码

学新通

学新通

然后我必须强调几点:

  1. 这个搭建知识框架可不是说你整理好要学习的知识顺序,然后建立相应的文件夹就行了,这所包含的知识你是要真的去学的!
  2. 学习的时候你一定要记笔记,一定要记笔记,这个很重要
  3. 最终你的知识框架应该是一个完善的层级文件夹,每个文件夹下有相应知识的学习笔记

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhiggegi
系列文章
更多 icon
同类精品
更多 icon
继续加载