准备了一周就去字节跳动面试,结果一面就被虐哭了------面试官做个人吧
Posted 上马定江山
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了准备了一周就去字节跳动面试,结果一面就被虐哭了------面试官做个人吧相关的知识,希望对你有一定的参考价值。
人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的。
我一听呀?那我这岂不是就不优秀了吗,于是毅然决然和女朋友分了手。
人们都说,互联网寒冬来了,这个时候还在大面积招人的公司,必然是牛逼的公司。而这个时候勇敢跳槽的人,必然是牛逼的人。
于是我开始了字节跳动的社招面试。
为了这天,我准备了整整一个星期。面试前一天排老长的队理了个利落的发型,胡子刮得一干二净。穿上崭新的新百伦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优秀三方库源码
所有资料已经全部上传至开源项目【GitHub】,有需要的朋友自取。
然后我必须强调几点:
-
这个搭建知识框架可不是说你整理好要学习的知识顺序,然后建立相应的文件夹就行了,这所包含的知识你是要真的去学的!
-
学习的时候你一定要记笔记,一定要记笔记,这个很重要
-
最终你的知识框架应该是一个完善的层级文件夹,每个文件夹下有相应知识的学习笔记
这样你的知识框架才算真正的搭建完成!至此,你向Android架构师迈出了最关键的一步。
有了自己的知识框架一定可以在面试中游刃有余了,最后祝大家面试顺利,都能顺利拿到满意的offer!
以上是关于准备了一周就去字节跳动面试,结果一面就被虐哭了------面试官做个人吧的主要内容,如果未能解决你的问题,请参考以下文章