前言
时间过得飞快,一代又一代就这么成长了起来,曾经的95后备受争议,如今的95后进入社会,扮演着各行角色,成为了行业顶梁柱,今天,要分享的是自己的成长经历。今年24岁,毕业之后进入一家小型的互联网公司工作,名字就不说了,算是熟知的,在这家公司呆了两年,直至今年才有了跳槽的想法。
每个人都拥有大厂梦,我也不例外,在小公司待久了,感觉人会荒废掉,太轻松,没有压迫感。在众多大厂中,最终选择了字节跳动。“年轻、活力、富有激情”是我听到的最多对它的形容词,所以毅然决然,希望自己能够在这个舞台上展示出自己。
以下分享这次面试字节跳动的面试题,另外还对自己的面试做了一些总结。
腾讯音乐三面斩获Offer,定级T2-1(技术题,不含HR面)
一面(一小时二十分钟)
一面是一个电话面试,下午6点左右特地找了一个地方电话面试,6点准时电话就过来了,不得不说,这方面还是专业的,时间有点远了,依稀记得一些题目。。。
1、Object的方法有哪些?
2、为什么要有HashCode方法,hash算法的原理,在Java中哪些地方用到,进而问到了HashMap的源码
3、Java有几种锁,synchronized与Lock有什么区别,Lock的实现原理,有没有碰到死锁的情况
4、Android源码中用到了哪些设计模式,举例说明
5、一个Android正常启动有多少个线程?(这里当时是比较懵逼的,第一反应是一个主线程,然后觉得应该不止这么简单,想到应用Activity启动的话,应该还有2个Binder线程,可能一个管理JVM的线程,面试官接着问还有哪些。。果断放弃不知道...)
6、Binder机制的实现思想
7、简单描述Https的实现思路
8、描述下快速排序的思想,时间复杂度?什么场景对应着最坏情况?
9、给定无序数组和一个值,找到两个数和为值的元素,不能使用额外空间复杂度(不要使用HashMap)
二面(一个小时,噩梦的开始....)
二面是视频面试,还是个周六下午。。。
1、TCP/IP四层模型,网络层和传输层有什么区别?网络层的主要工作是什么
2、socket.accept()函数对应着TCP三次握手中哪一次握手,哪个函数代表连接建立完毕,四次挥手的过程?
3、有做过哪些优化工作,卡顿优化,内存优化,启动优化,APK体积优化,每个做了哪些工作
4、JNI开发中有碰到什么问题?怎么定位native crash
5、递归非递归反转链表
6、打印回环数组
三面
过了整整一周到了隔周五上午,接到了第三面的面试通知,约的是隔周三上午 10:30 。第三面面试官时不时的面带笑容,给人很轻松的感觉。
1、Looper消息机制,postDelay的Message怎么处理,Looper中的消息是同步还是异步?什么情况下会有异步消息
2、事件分发机制的源码
3、android的屏幕刷新机制,怎么优化UI卡顿情况
4、有没有使用过插件化框架,实现原理?
5、你在项目中碰到什么比较棘手的问题?怎么解决的?
6、找到一个无序数组中第一次出现最多次数的元素
学习经验总结
(一)调整好心态心态是一个人能否成功的关键,如果不调整好自己的心态,是很难静下心来学习的,尤其是现在这么浮躁的社会,大部分的程序员的现状就是三点一线,感觉很累,一些大龄的程序员更多的会感到焦虑,而且随着年龄的增长,这种焦虑感会越来越强烈,那么唯一的解决办法就是调整好自己的心态,要做到自信、年轻、勤奋。这样的调整,一方面对自己学习有帮助,另一方面让自己应对面试更从容,更顺利。
(二)时间挤一挤,制定好计划一旦下定决心要提升自己,那么再忙的情况下也要每天挤一挤时间,切记不可“两天打渔三天晒网”。另外,制定好学习计划也是很有必要的,有逻辑有条理的复习,先查漏补缺,然后再系统复习,这样才能够做到事半功倍,效果才会立竿见影。
(三)不断学习技术知识,更新自己的知识储备对于一名程序员来说,技术知识方面是非常重要的,可以说是重中之重。要面试大厂,自己的知识储备一定要非常丰富,若缺胳膊少腿,别说在实际工作当中,光是面试这一关就过不了。对于技术方面,首先基础知识一定要扎实,包括自己方向的语言基础、计算机基础、算法以及编程等等。
写在最后
我已经顺利拿到了offer,大家也要加油,希望都能找到自己想要的工作!
给大家一些建议
1.遇到问题,不要没有进行仔细分析,就直接百度和谷歌
2.学习知识的时候,不要没有自己的思考和理解,死记硬背
3.要记得深入追究一个问题的本质原因
4.一定要有自己知识点总结和梳理
5.学到知识点,没有很好的实践,动手能力不够
6.要自己的学习的方法
7.确定目标和找到有效的学习方法
祝大家都能得到自己心仪工作!望各位看官老爷点赞关注转发,谢谢!
网友评论