什么工作,能在校招时拿下超高薪 什么岗位,能让你被评价为前途无量 什么团队,能让你感受到“厉害的技术”
当然是研发岗 尤其是:字节跳动的研发岗
现在,找春招实习的黄金时间已经过半 字节跳动面试研发岗,也已开始了一轮 目前,头条研发岗 Android的实习或社招岗位,都非常紧急在招人!
接下来就分享一下字节跳动的实习面经:
以下的字节面试都是在网上进行视频面试
第1面(技术,50min)
- 自我介绍
- handler机制
- sendMessage和postRunnable的区别。
- ThreadLocal原理,底层实现
- HashMap底层,扩容,LinkedHashMap
- Service的onBind和onStart差别
- Activity启动生命周期,A跳转B
- Android持久化方案,SharedPreference是否可以跨进程通讯。ContentProvider
- ClassLoader机制,双亲委派。如果我要写一个Activity类,那怎么保证加载的是我自己写的Activity
- 算法题,约瑟夫环
- TCP与UDP的区别
- 三次握手四次挥手
- TCP核心机制
- HTTP和HTTPS及其区别
- HTTP请求格式(首行,协议头,空行,正文)
- GET与POST的区别
- 若建立连接时间比较长,HTTP是怎么优化的
- 反问
(注意是HTTP不是TCP,可以参考下:https://blog.csdn.net/weixin_34056162/article/details/85880162)
(网络怼到我哑口无言,问了三个问题都答不上来,这才换了一个方面)
- Java中public,protected,default(什么也不写),private的区别
- 子类可以继承父类哪些访问限定符修饰的方法(public,protected,default(什么也不写))
- 如何使得一个函数不被覆写(final)
- 静态内部类和匿名内部类的区别
- 内部类如何调用外部类的方法(Outter.this.方法名)
- 内存泄漏与内存溢出关系
- 判断对象是否已死(两次标记:可达性分析 finalize方法)
- 四种引用(强引用,软引用,弱引用,虚引用)
算法题:两数之和(leetcode第一题,https://leetcode-cn.com/problems/two-sum/,要求时间复杂度O(n))
(太紧张了,没优化到O(n),竟然给了2面)
第2面(技术,70min)
项目(10min)
算法题:判断一个字符串是否是一个IPV4
算法题:连续子数组的最大和(剑指Offer上的题)
- 自我介绍
- 项目技术点详解
- 写过什么自定义View
- OkHttp代码看过吗,用了什么设计模式
- MVC、MVP区别,项目中的实现。
- LiveData和EventBus的相关讨论,真的是讨论,畅所欲言
- 看过哪些源码
- SharedPreference相关
- Android动画了解吗,用过什么
- TCP、UDP区别,面试时的语音用的是什么,为什么要这么用。
- 代码题,5个线程对一个int进行累加到1000.
- Java异常体系(运行时与非运行时异常的区别)
- HashCode与equals的区别
- JVM内存区域划分(程序计数器,虚拟机栈,本地方法栈,堆,方法区,运行时常量池)
- JVM内存回收方法(判断对象是否已死<1面那个问题>,新生代老年代的垃圾回收算法<复制算法,标记-整理>)
- 哪些对象可以作为GC Roots
- 数据库中delete和drop的区别
- 数据库事务的使用场景
- 数据库三大范式
- 数据库索引的创建原则
- 数据库索引底层实现(B 树)
- 线程,进程,程序的区别
- 死锁的产生条件
- 模式继承与模式的优劣势
第3面(技术,40min)
项目
算法题:打印1-n之间的素数
智力题:25匹马,5个赛道,最少多少次可以知道跑的最快的5匹马(运气爆棚,和百度一模一样)
设计题:设计一个下载器的接口
第4面(电话hr面,15min)
问了些基本问题
面试总结
总体来说面试感觉比较常规,没想象中的难。重点是我觉得就我的面试感觉来看。客户端开发这一块,我觉得头条着重考察的是你的基础知识是不是过关,然后coding的能力如何。最后一轮的面试官也是说,好多开发常用的工具,不在实际的开发环境中,只是自己做些个人项目是很难涉及到的,新人只要基础知识过关,coding能力过关,进来学就行了。
所以除了基础知识部分外,觉得算法题这块是比较重要的,尽量做到bug free,时空间复杂度最优,代码整洁规范,然后写完主动给面试官跑一下test case,会给面试官留下比较好的印象,毕竟客户端开发一版面的算法题都不难。
面试字节跳动的划重点笔记看一下
一、代码能力是研发面试考察的核心!
说句实话,研发面试考察最核心的能力就是... ...代码能力!
代码能力是计算机专业的基础。能否在有限时间内写出清晰简洁、逻辑清晰的代码,不仅可以考察出候选人是否有扎实的基本功,也可以让面试官对候选人在未来是否能够胜任相应的岗位工作有一个基础判断。
平时写的代码多不多,面试之前有没有做过准备,有经验的面试官一眼就可以判断出来。这里给大家分享三点建议:
1、加强基本功,增加代码量
多看优秀的源代码,认真从效率、逻辑等方面分析他人如何简洁明晰地实现一个函数,这对提升自己的基本代码能力有很大的帮助。
2、面试前多做题,保持手感很重要
面试之前多做些练习,这不仅可以加快答题速度,也会让自己养成较为规范的答题习惯。
3、复盘笔试答案,思考更优解
最后,不少面试官喜欢在面试的时候复盘笔试题目,与候选人讨论题目的更优解,从而考察考生是否具备主动思考能力。
二、不反对刷题不过更希望大家举一反三
在面试过程中,经常会有同学非常骄傲地坦白道:“我没有刷题。”
面试官们不反对刷题,甚至希望同学们在大量做题之后,能够灵活运用、举一反三。
大量做题不仅可以在短时间内提高同学们的解题速度,也会在一定程度上帮助你拓展自己的答题思路。
当然,如果发现同学刷题,面试官也会变种问题,从侧面考察同学是否死记硬背答案。作为春招的面试官、你未来的潜在同事,我们更希望同学们能够灵活贯通。
所以说,该准备准备,该刷题刷题,临时抱佛脚至少体现了你对面试重视是不是?等你题目刷到一定程度,你就会发现自己的能力有了一个量变到质变的提升。
三、项目描述要突出项目重点,表述逻辑要清晰
参与面试的同学们大多都有实习经历。在公司的大环境下,你会在实践中不断夯实代码基础,也会有更多机会接触到最新的技术。
面试官们希望大家对过往的实习经历做更深入的思考,不是简简单单描述你在哪里做了什么。毕竟面试官需要在短时间内看到你的个人能力。发挥主观能动性,多在几种不同方法之间做比较,给出在思考之后得出的最优解,会显得你格外与众不同。
除此之外,思考的逻辑性和表达能力也是面试时考察的重点。在面试时切记要简化答案,能表达清楚想法就好,项目描述时只需要简单介绍项目背景,并着重突出项目亮点就可以啦!千万不要过度包装,要知道坦诚清晰可是「字节范儿」中很重要的一点哦~
四、跨专业面试不会受到区别对待,技术实力最重要
面试官们常常会被问到:非计算机专业的同学跨专业面试会不会受到区别对待?
在这里我想强调:完全不会!
不同岗位对具体的专业能力要求不同,拿算法岗位举例,只要你代码基础功底过硬,数理能力够强,又对所面试岗位是发自内心的热爱,就算你是学挖掘机技术的,面试官们也是想给你发offer的。
算法行业的通用能力就是代码硬实力。如果不具备这种能力,在实际工作中就总会感觉不自信,受人制肘。所以非科班出身的同学们不用受自己的专业所限,但一定要多多锻炼,努力提升自己。
不过这里也想真心地提醒大家几句,千万不要盲从跟风选择自己的职业方向,每个领域都有自己广阔的发展空间,适合自己的才是最好的。越热门的岗位对基础的要求越高,面试官在面试的时候是看得到笔试成绩的,所以还希望大家在面试过程中诚实一点,不懂装懂可是会减分的哦!
五、哪些行为一定是减分项?
虽然面试考察最多的是技术基础和代码能力,但是从心理学的角度分析,第一印象也是相当重要的啊喂!
为了这场面试,逗比的我收敛了表情包,穿上了帅气的格子衫,还把头发梳成了面试官的模样,你说你穿着拖鞋、脸都不洗就来面试是不是有点伤我心了。
如果同学们选择的是视频面试,希望大家在面试前做好充分的准备工作。面试开始之后,如果遇到候选人迟到、没有调试设备、网络不畅通、麦克风关掉、面试环境嘈杂等情况,面试官会给一定时间调试,但是面试体验会受到一定影响,心理上可能会减分的哦!
诚实守信是做人第一要务,也是字节跳动用人的底线。即使是视频面试,面试官也是可以看到考生行为的!答应我,像类似「一边考试一边用ipad查答案」这种事情千万不要干好嘛!作为考官的我在摄像头另一边看到了也是很尴尬的......
最后,如果你现在的学习没有方向不系统,学了又总是忘记没有效果,那么你可以参考一下我下面的学习路线,还有配套的学习资料,有需要的可文末自取:
Android技术学习路线(可参考)
总共分为6个部分:
- Java 基础(★★)
- Java 高级(★★)
- Android 基础(★★★)
- Android 高级(★★★)
- Android 项目(★★★)
- 项目面试常见问题(★★★)
一、Java 基础(★★)
- 面向对象思想
- 多态
- 异常处理
- 数据类型
- Java 的 IO
- 集合
- Java 多线程
Java 高级(★★)
- Java 中的反射
- Java 中的动态代理
- Java 中的设计模式&回收机制
- Java 的类加载器
Android 基础(★★★)
- Android 基本常识
- Activity
- Service
- BroadCastReceiver
- ContentProvider&数据库
- Android 中的布局
- ListView
- JNI & NDK
- Android 中的网络访问
- Intent
- Fragment
Android 高级(★★★)
- Android 性能优化
- Android 屏幕适配
- AIDL
- 自定义控件
- Android 中的事件处理
- Android 签名
- Android 中的动画
- 网络协议
- 其他
不管是什么行业只要技术过硬就不愁没饭吃,那些焦虑的人都是学习不够技术不够的人,我们除了通过不断的学习去增强自身的技术没有其他的方法捷径可走。
Android架构师面试题相关详解整理
以下截图为这本PDF的目录索引,大家可以快速翻阅,是否有感兴趣或者薄弱点,查漏补缺或者深入学习都很不错,;
面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:
可以说,如果你熟知这份PDF里面的大部分知识点(熟知,而不是深入理解原理和架构),随便去哪个互联网公司面试个20k以上的移动开发岗位很简单。
Android简历 社招解答 经典HR面试解析
以上是整理总结的Android中高级面试遇到的真题解析,希望对大家有帮助;同时很多人经常也会遇到很多关于简历制作,职业困惑、HR经典面试问题回答等有关面试的问题。同样我也搜集整理了全套简历制作、金三银四社招困惑、HR面试等问题解析,有疑问,可以提供专业的解答。
这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容
作为一名Android开发的热爱者,只要Android不死,我就会一直在Android开发的道路上前行。无论前途如何曲折,我相信Android会变得更加美好!