字节跳动面试经验分享(非常详细)

合集下载

字节跳动AI-Lab算法岗面试复盘

字节跳动AI-Lab算法岗面试复盘

字节跳动AI-Lab算法岗面试复盘展开全文写在前面4月初投递简历,大概1周左右面试通知,1、2面连着各1小时,3天后HR电话说2天后3面,3面也是1小时,约1周后接到offer 电话。

一面直接撕算法题顺时针输出矩阵十分常规。

我觉得主要在考察coding的熟练度吧,熟悉的人写起来会比较快,不熟悉时可能边界之类的bug会出一些,建议面试前先随便写写热热手。

LCA(最近公共祖先)tarjan或者ST+RMQ都可以。

由于tarjan写起来习惯点平时写得多所以我肯定是写这个的,当然另一种解法也提了一下没有写,两种算法分别是典型的离线和在线算法。

线段树的一些操作对于打过OI、ACM的应该也是没什么难度的,不明白的可以随便搜一下,这里篇幅有限不好写。

我觉得lazy tag以及位移操作等会是加分项,因为即使上课讲过线段树通常也不会提这些,把这些应用进去通常是算法竞赛所需,不包含在线段树这种数据结构的思想里。

后面时间有多就扯了扯平衡树啊之类其他的数据结构算法,没有写题目。

(手撕红黑树就刺激了)二面项目、算法•主要讲了下项目,我们的课程体系中人工智能、机器学习相关的课非比较多(甚至大一就开始整HMM中文分词了),因此把课内项目讲完就花了不少时间。

•一道开放算法题:模糊匹配(一个字串里有些地方可能是错的或者缺了,在原来的地方找到最有可能的位置)。

一开始惯性思维误以为机器学习岗嘛,要先分词然后一个一个去匹配之类的,并没有想到好方法,后来经面试官提醒先写了编辑距离问题(基础DP问题)后写得还算比较好(?大概)。

•由上题引出了一些其他的东西,DP直接写了个时间空间都是O(n^2)的,面试官问我可以优化嘛。

思考良久说好像不能再快了(惯性思维一般搞算法都是往时间优化的),经提醒哦原来应该在空间上做文章,后来思考了一会儿发现可以优化到O(n)。

三面项目、机器学习问题及其他一些交流•为什么本科毕业就直接来找工作做机器学习。

•这个我在这里就不说了也不太方便说也算稍微有些隐私的东西吧(估计也是看到简历是本科所以leader直接面?)•机器学习里觉得学得比较好的或者印象比较深是什么。

靠着这份面试资料,成功跳槽字节,薪资从16K涨到30K(附面试题)

靠着这份面试资料,成功跳槽字节,薪资从16K涨到30K(附面试题)

靠着这份面试资料,成功跳槽字节,薪资从16K涨到30K(附面试题)前言本人毕业于一所末流一本大学,大学学的是Android开发专业,毕业后在三四家公司做过,前后差不多有5年了,但是薪资一直都没有涨,于是就有了跳槽去大厂的想法,就开始为面试做准备。

准备面试其实已经准备了挺久了,当时打算面试准备了差不多以后,跟公司谈谈涨薪的事情,谈不拢的话,就年后直接找其他的公司。

谁想到婚假还没休完,老板就在公司宣布了撤出北京的决定,愿意去广州的就去,不愿意的就自己找工作,给了一个多月的时间找工作,就没有赔偿了,反正公司也没钱。

悲哀….幸好提前一段时间准备过,所以投了简历到几家大公司,几天后就收到了字节跳动的面试邀约,就去面试了,因为提前准备过,所以3面(不包括HR面)后就拿到了字节跳动的offer,感觉还是比较容易的。

本文就给大家分享一下我面试前的准备和字节跳动的面经,希望对正在找工作的朋友提供一些帮助。

面试准备简历内容基本信息姓名,联系方式,工作年限,学校,专业,学历个人技能•工作几年•独立开发•掌握的技能,组件化、插件化、热修复、自定义view•适配、架构、第三方源码、性能优化•职业技能:管理能力、产品能力、沟通能力这些东西一定要写自己熟悉的,最好项目里面能体现出来的内容项目经验项目描述:一句话工作内容:做了哪些模块,用了什么技术、做过哪些优化,重构方面的内容项目方面写两到三个项目,最好最近一两家公司做的项目公司经历公司名称时间工作内容面试题准备项目中用到的技术整理出来,上网找找相关的技术文章和面试题看看,然后用自己的话把这些内容梳理出来,最好有自己的结论,因为面试官习惯问“为什么”Android知识点基础:•四大组件•fragment•自定义View•事件分发•滑动处理•handler•AsyncTask•IntentService•ThreadHandler•Bitmap相关的•动画的用法进阶:•ListView •RecyclerView •AIDL •LruCache •DiskLruCache •View •Window •Activity的关系•进程保活•性能优化高阶:•Bindler •Context•序列化•插件化•组件化•热修复第三方框架:•Glide•okhttp•retrofit•RxJava•Android Jetpack一定要熟悉一个框架的源码,然后知道其他框架的优缺点混合开发:•Flutter架构和语言:•MVC •MVP •MVVMjava知识点•多线程•并发•泛型算法题:•排序•二叉树•链表•栈 / 队列•二分•哈希表•二叉搜索树•数组 / 双指针。

字节跳动信息流广告优化师面试题

字节跳动信息流广告优化师面试题

字节跳动信息流广告优化师面试题我面试的岗位是字节跳动信息流优化师,4.23日上午收到字节HR的电话,通知我面试,整个面试流程非常紧凑,面了三面,分别是下午的3:00-3:30一场,5:00-5:30一场,晚上的9:30-10:00一场,第二天就通知面试通过的消息。

第一轮:HRBP面试,这一轮的面试主要是考察你对岗位的认知以及你个人的职业发展规划。

这一轮面试氛围很好。

问了我对于信息优化师的理解,之前所作的实习内容,对于每段实习的总结。

就个人而言,Hr这面需要你提前熟悉岗位,并且对过往的经历有个大概的回顾,能够有逻辑的梳理出来。

第二轮:leader面试,这一面主要考察你和岗位的匹配度以及成长的价值和空间。

这一轮会详细询问你过往的实习,你所做出的业绩,你是如何做出的,在实习过程中你是如何表现的。

问如何看待996以及你个人的抗压力程度。

因此,我觉得leader这一轮一定要详细复盘过往的经历,回顾细节,总结出个人的优势。

初次之外,这一轮面试也会将一些工作场景中出现的情况告诉你,来挖掘你对岗位和环境的接受程度。

第三轮:城市负责人面试。

这一面主要考察你的逻辑反应能力以及你对公司业务的了解情况。

这一轮的面试问题比较多,问的种类多样。

有问我平时生活中是什么样的人,个人的业余爱好。

也有专业的问题,比如:你觉得在抖音上投放广告和你之前在淘宝上做的广告推广区别是什么,如果淘宝用户要来抖音投放广告,你会如何说服对方。

我觉得最后一轮大Boss面试还是要求你对公司的产品有比较清晰的对比,并且需要你把过往经历和未来经历进行相比的对比,比较,并在这个过程中要体现出你的个人优势,对公司和岗位的兴趣。

在最后问我有什么问题要咨询的时候,我直接表达了我渴望留在公司的想法,我想这在一定程度上也有加分作用。

总之,以下几点是比较关键的因素:熟悉公司和产品,了解岗位职责,分析自己的优势,总结过往实习经历,将过往经历和面试岗位联系起来,有清晰的工作规划,真诚的心。

拿到字节跳动offer后,我总结了自己学习路线和面试心得

拿到字节跳动offer后,我总结了自己学习路线和面试心得

拿到字节跳动offer后,我总结了自己学习路线和面试心得上个帖子:双非渣硕的我是如何拿到字节跳动研发岗SP的?(重发一次,又补充了不少东西)里很多人质疑我,认为我的简历根本过不了华为,更别说拿到字节跳动这种一线大厂的offer,我想说的是不要把你自己的认知强加在别人的身上,自己不行不要认为别人不行,你自己不努力不要说别人努力,我来步行街是来分享自己的经历的,没有作假成分。

我把自己在知乎平台上两篇比较点赞数量比较多的文章搬运过来,这两篇文章分别是1、讲述我个人的C++学习路线文章:能拿BAT、TMD等国内互联网大厂的C++学习过程分享~2、自己总结的面试心得文章:可能是全网最详细的“如何顺利通过互联网大厂面试“的文章了,还有没介绍到的来欢迎打我,如果觉得有用,您点个赞或者点个推荐,觉得没用直接右上角吧,我也不想占用你的时间。

下面是C++学习过程的文章:前言上篇文章发布后,问我如何学习 C++ 的小伙伴可远比问我如何写简历和刷题的多多了,思虑再三还是先把这自己的 C++ 学习路线发出来吧,从入门到入土的那种。

坐好小板凳,准备发车了~萌新入门我在 2019 年 8 年之前对C++的认识只停留在“Hello world”水平上,本科时期学的全忘光了,面向对象三大特性:封装、继承、多态,我就记得一个多态。

出于想要掌握一门工业级别的语言的初衷,去年这个时候我开始了C++ 的学习之路。

也有人问我为什么选择 C++ 而不是 Java ,我能说是喜欢 C++ 的严谨和不好学吗...“我在 B 站上大学”对我而言并不是一句玩笑话,第一反应就是去B站上看看有没有相关视频,再三选择最终确定了黑马机构出版的C++学习教程链接如下:https:///video/BV1Tb411j7uM我当时开着 1.5 倍速很快就看完了,还跟着视频里敲了不少代码,这个视频会教你一些最基本的 C++ 常用知识比如多态、继承之类的,但是都不是很深,只是大概提了一下。

字节跳动-视频架构-后端开发(面经总结)

字节跳动-视频架构-后端开发(面经总结)

字节跳动-视频架构-后端开发(⾯经总结)字节跳动-视频架构-后端开发(⾯经总结)时间:7.16⾯试⽅式:视频⾯(⼀⾯)部门:字节跳动-视频架构-后端开发主要根据简历上的内容(项⽬和技能)来问1. 视频流的传输⽅式?(项⽬)答:点对点传输,第三⽅流媒体服务器传输,⾃主搭建流媒体服务器传输;2. 如何实现内⽹穿透的?(项⽬)3. 项⽬中是采⽤UDP-Socket实现⼼跳包,为什么采⽤UDP?(项⽬)答:⼼跳包它像⼼跳⼀样每隔固定时间发⼀次,以此来告诉服务器,这个客户端还活着。

其实TCP和UDP都可以实现⼼跳包,⼼跳包采⽤TCP还是UDP根据项⽬需要,采⽤UDP是因为它的速度快,占资源少。

速度快:TCP必须建⽴连接,⽽UDP是⼀个⾮连接的协议,所以UDP更快;占资源少:UDP的数据报头部只有8个字节,⽽TCP数据报头部是20个字节;4. TCP与UDP的区别?答:1 基于连接和⽆连接;2 TCP是可靠,保证数据正确;UDP不可靠,不保证数据正确;3 TCP保证数据顺序到达;UDP不保证数据顺序到达;4 TCP速度慢,因为TCP必须创建连接;UDP速度较快,不需要建⽴连接;5 因为上述开销,TCP是⼀个重量级协议;UDP是⼀个轻量级的协议;6 ⼀个TCP数据包报头的⼤⼩是20字节;⼀个UDP数据报报头是8个字节;7 TCP有流量控制和拥塞控制;UDP不能进⾏流量控制;8 TCP⾯向字节流;UDP⾯向报⽂;9 应⽤场景不同,TCP适合对效率要求相对低,但对准确性要求相对⾼或者是有连接的场景,TCP⼀般⽤于⽂件传输(HTTP,HTTPS,FTP等协议),邮件(POP,SMTP等协议),远程登录等场景;UDP更适合对效率要求相对⾼,对准确性要求相对低的场景,UDP⼀般⽤于即时通信(QQ聊天),在线视频(rtsp流速度⼀定要快,偶尔丢包没关系),⽹络语⾳电话等场景;5. TCP四次挥⼿讲下?为什么有TIME_WAIT?答:1. A不能保证最后的ACK能达到B,如果最后的ACK丢失,那么B显然收不到, B于是发起了重传FIN的操作,此时如果A处于CLOSED的状态,就没办法给对端发ACK了,所以A应该等⼀段时间,这段时间就是所谓的TIME_WAIT。

用户产品经理——【字节跳动 笔试面试精品资源】

用户产品经理——【字节跳动 笔试面试精品资源】

旗开得胜一面:
1,自我介绍
2,项目的基本数据
3,项目相对于竞品的优势
4,项目用户和内容来源
5,产品经理的工作内容
6,介绍使用过的一个app
7,设计一个类似的app
二面:
1,自我介绍
2,项目中最有价值的部分
3,你对这个项目做的贡献
4,项目中微博的运营和具体内容
5,前后数据对比,分析你在项目中起到的作用
1
旗开得胜6,什么是用户体验
7,为什么要做产品经理
8,你最突出的特质
9,介绍使用过的一个app
10,设计一个音乐播放器
三面:
1,自我介绍
2,如何理解逻辑思维
3,文科与工科的区别
4,项目中如何引导舆论
5,项目定位,与优势
6,是否收到过负面反馈
7,举例一个熟悉的社交产品
8,微信的延展讨论
1
旗开得胜9,为什么做产品经理
1。

七月份一个朋友刚入职字节跳动的测试开发面试题,内附答案

七月份一个朋友刚入职字节跳动的测试开发面试题,内附答案

七⽉份⼀个朋友刚⼊职字节跳动的测试开发⾯试题,内附答案朋友⼊职已经⼀个⽉左右了,整体⼯作环境还是⾮常满意的!所以这次特意抽空给我写出了这份⾯试题,⽽我把它分享给⼩伙伴们,⾯试&⼊职的经验!⼤概是在5⽉中的时候他告诉我投递了简历,7⽉的时候经过了3轮⾯试收获了Offer,当时也参考了很多⽜客⽹站上⼤佬的⾯经。

今天来把当初⾃⼰整理的所有可能会问到的题⽬都分享给⼤家。

此外这⾥的⾯试题,可以分享给⼤家哈,为了不影响⼤家观看,获取⽅式我放下⽂末了!个⼈信息1. ⾃我介绍项⽬(重要)2. 项⽬中最⼤的挑战,花费最长时间的项⽬,⽐较有成就感的事情3. 项⽬中印象最深的bug4. 有什么想问的吗5. 适合业务测试还是技术测试6. 为什么选择字节7. 分别⽤3个词描述⾃⼰的优缺点测试1. 对测试开发的认识,为什么想做测试开发,测试测开的理解2. 软件的分类3. 什么是接⼝测试4. 微信红包的测试⽤例5. 微信评论功能的测试⽤例6. 测试⼀下⽀付宝付款码,设计测试⽤例7. ⿊盒测试的⽅法8. ⽩盒测试的⽅法9. 软件测试的流程10. 登录功能怎么设计测试⽤例?11. ⽹上银⾏转账是怎么测的,设计⼀下测试⽤例。

12. 给你⼀个⽹站,你应该如何测试?13. ⼀个有⼴告的纸杯⼦,请设计测试⽤例?14. 想象⼀个登录框,包括ID、密码、登录、取消,记住密码(复选框),尽可能的写出你想到的测试点?15. 测试淘宝购物车的测试案例16. 设计⼀下抖⾳上下滑动视频的测试⽤例17. 设计抖⾳app⽤户登录测试18. 中断测试19. 测试在⼀个场景下,推荐滤镜20. 朋友圈点赞评论测试⽤例情景问题1. 如果抖⾳⼀个地区的许多⽤户⽆法下载视频的原因2. 如果⽤户收到了银⾏短信提⽰已经扣款成功了,但是商家没有收到钱,你觉得会是什么问题3. 输⼊⼀个url,请问发⽣了什么?4. 如何实现⼀个⽤户登录功能5. ⾼并发下减少事务带来的性能消耗?6. 如果⼀个API接⼝出现⼀个不稳定出现的bug,如何去确定?7. 如果提交bug,开发告诉你不存在,如何处理?8. 访问页⾯加载缓慢的原因以及如何解决9. 如何你和你的领导意见不⼀致,你会怎么做10. 如果图⽚上传失败,分析原因11. 针对评论功能,你如何设计接⼝,主要回答需要传递的参数有哪些?12. app页⾯⽩屏了什么原因13. 全链路压测中,找到了某⼀个服务器CPU负载率100%,磁盘和内存使⽤率正常,请问你会怎么去分析可能的原因14. 设计买⽕车票的系统,输⼊出发站和到达站,返回所有可能的结果15. 添加购物车请求后发⽣了什么16. 淘宝⽤户⽀付失败的原因Python基础1. python的内存池机制2. python数组和列表的区别3. python你常⽤哪些包,标准库4. ⾯向过程和⾯向对象的语⾔区别5. 反射6. python的数据结构7. dict和list的底层实现8. python装饰器,作⽤,⽤法9. 编译型语⾔和解释型语⾔解释型语⾔的优点10. 垃圾回收机制11. GIL锁12. is和==13. __new__和__init__区别14. ⽤python写出多线程,循环打印123操作系统1. 读写锁,不同点,应⽤场景2. 线程和进程的区别是什么3. 什么是死锁,死锁的条件4. 如何预防死锁,!避免死锁,死锁发⽣的检查5. 堆和栈的区别以及存储模式有什么区别6. 内存泄漏和内存溢出7. 多线程和多进程,以及应⽤场景8. 进程通信⽅式9. 多线程如何实现的10. 计算机内存管理的⽅式11. 进程调度⽅法12. 什么是Linux⽤户态和内核态13. 进程的状态,进程状态就绪和等待状态的区别是什么14. 虚拟内存是⼲嘛的15. 线程池16. 线程安全的实现⽅式17. 进程和线程的上下⽂切换18. 协程计算机⽹络1. TCP三次握⼿,四次挥⼿的过程2. 为什么客户端要在TIME_WAIT状态等待⼀段时间3. CLOSING状态4. 如果server端没有收到第三次ack,但是收到了client端发送的数据,server端会怎么处理5. 讲⼀讲get和post6. http状态码7. TCP和UDP8. ⼀次HTTP请求的过程(输⼊URL到返回的全过程)9. http和https10. ⽆状态和⽆连接11. OSI七层模型,各层有哪些协议12. HTTP协议请求报⽂结构13. TCP如何保证可靠传输,丢包怎么办14. 讲⼀下滑动窗⼝15. TCP三次握⼿中SYN和ACK包有什么不同,包含什么16. UDP想要可靠怎么实现 RUDP17. 半连接攻击18. TCP粘包和拆包19. cookie和session是什么,为什么要⽤cookie和session20. DNS协议和作⽤21. DNS的查询⽅式22. ARP协议作⽤、⼯作⽅式23. 以太⽹数据包的⼤⼩最⼤为多少24. 三次握⼿过程中是否存在安全问题?描述⼀下存在什么样的安全问题?针对这样的安全问题如何防御?25. web攻击,CSRF攻击26. TCP如何进⾏拥塞控制?拥塞控制如何判断发⽣拥塞?27. TCP快重传如何判断丢失?28. https证书在哪存放29. 长连接和短连接以及他们分别适⽤的场景数据库1. sql语句取⼀个⽉内的id分组取⼀个年级中每个班级年龄最⼩的同学名字成绩表输出前三名的成绩,后三名呢拷贝A表的数据到B表查询每门科⽬都⼤于80分的学⽣名字筛选出每个⼩时的记录考察where 考察聚合函数 where和having的区别⼀个数据库sql查询重复个数在学⽣成绩表中查询平均分不及格(低于60)的学⽣id及平均分查询总成绩最⾼的⼈的姓名 user表中在⼀个时间段内登陆三次的⽤户id limit的⽤法2. 数据库引擎及他们之间的区别 InnoDB MyISAM MEMORY:3. mysql的⽇志怎么查询4. (多次)查询速度慢的原因,如何解决5. 数据库的事务是什么?怎么使⽤6. 主键、外键、索引的各⾃的含义以及区别7. 事务的特性(ACID),讲⼀下每个特性的意思8. 索引的类型9. 什么是聚簇索引、什么是⾮聚簇索引10. 索引的数据结构是什么11. 前缀索引12. MySQL/MongoDb 端⼝号13. 数据库有⼏种表之间的连接形式(左连接,右连接,内连接,完全连接)14. 说说redis中的数据结构和应⽤场景15. 三⼤范式16. 数据库隔离等级17. 为什么要⽤b+树索引⽽不⽤hashLinux1. 常见命令查看进程ps 查看所有进程长格式ps -ef 打印当前⽂件夹⽂件 ls -al a所有⽂件 l详细信息软链接 ln -s a target 硬链接 ln 创建⽬录 mkdir 修改权限 chmod 查看⽂件:移动⽂件mv 也可以重命名复制⽂件cp 删除⽂件 rm -r 递归删除 -f删除只读⽂件通配符?单个字符,*多个字符,[a-z]字符集 grep 正则搜索显⽰⾏号-n 查询个数-c 反选-v 查看指定进程 ps -ef | grep pid 查看命令历史 history 查看磁盘空间df -hl 查看⽂件⼤⼩du 查找⽂件 find [⽬录] 以名字查找-name “h*”以h开头终⽌⼀个进程 kill -9 pid2. 如何防⽌新⼈误操作rm -rf3. 找进程号为199的进程 ls -ef|grep 1994. 某⽂件中含关键词的⾏数 grep -c "key" ./file5. 该⽬录下以.log结尾的⽂件中包含关键词a但不包含关键词b的⾏数 grep "a" ./file | grep -cv "b"智⼒题1. ⼀根⾦条,需要⼀周每天都发⼯资,切割两次,请问怎么切割把⾦条切分为1/7, 2/7, 4/7,每天找零2. 100个⾜球队两两⽐赛⾓逐出⼀⽀冠军队伍,请问⾄少⽐赛⼏次每场⽐赛淘汰⼀只队伍,所以需要99场⽐赛3. 25匹马5个赛道,求前三名4. 100个⾖⼦,五个囚犯,拿的⾖⼦最多或者最少都要被处死,求谁的⽣存概率⼤⼀点这⾥就是朋友分享给我的⾯试,不过不仅仅是他⼀个⼈的⾯试题,还有些⾃⼰整理的⼀些⾯试,当时整理的题⽬。

字节跳动用户服务专员面试心得

字节跳动用户服务专员面试心得

字节跳动用户服务专员面试心得一般面试流程笔试(如果内推,一般可以免去笔试)2、电话面试(一轮,可能有电面可能没有)3、现场面试(3-4轮)第1轮:基础技术面试,面试内容包括:简历提问,计算机基础知识丶算法知识/面试题第2-3轮:高级技术面试。

面试的内容包括:业务相关知识丶算法知识/面试题第4轮:Leader面试或者HR面试。

面试的内容主要是传说中的行为面试(bahavior interview),主要就是聊天,然后看看你的三观情况一、下面是心路历程的感受1、简历:基本不刷人2、笔试:考的比较广,只要基础不是太差,人品不是太差就能过3、面试:面试官是根据你的简历来问的,所以都不难。

不过他会在你懂的领域里一步一步往深处挖,以此来看看你的极限在哪。

比如项目里用到的技术、看过的技术书、你自我感觉擅长的技能,这些都是切入点,他更多的是以此来了解你对技术的专注度。

然后是算法,基本的数据结构要会用,还有常用排序和查找算法要会,并且会手写代码。

然后是项目中每一个细节要懂,用到的技术要去深入研究。

我二面倒下的原因就是因为太多东西处于半知的状态,面试官对我的评价就是:很多东西不是会用就可以了的,你要深入去解剖它的原理,你需要了解的不是一样东西,而是一类东西。

感觉初面的问题还是很看面试官的,但是提升自己的专业技能与思考还是一个必不可少的过程二、作为一名Android资深开发者,需要掌握哪些技术现在面试往往更注重基础和深度的,而且还有很多新的技术都会问到,包括音频,人工智能,混合开发,甚至底层和全栈方面都得会点新技术层出不穷,去年kotlin到如今Flutter,技术迭代,你是否会变得固步自封?移动端的招聘量变少,反而中高端的职位越来越多了,冰火两重天,你是否在边缘?做了多年的技术码农,缺不想安于现状,总想在项目中有所突破,缺不知如何下手?那么在下面我从5个方面整理了一些高级工程师应该懂得技术点:1、如果你想成为一名架构师,需要掌握的技术点!①架构师成长第一站:UML建模AOP面向切面架构设计实现淘宝式登录框架正向工程与逆向工程在UML图中的应用②架构师第二站:无死角分析Android系统源码Android Handler源码分析及其手写Handler架构Message链表原理与重用机制Binder核心原理与架构设计Activity进程跳转APP启动流程源码解析③Android事件总线框架设计:EventBus④组件化丶插件化框架设计⑤数据库框架设计⑥OkHttp网络访问框架设计⑦Glide加载框架设计⑧RxJava2⑨MVP实现架构搭建2、作为一名Android底层开发工程师,应该掌握哪些技术点呢?①基础知识:linux、MakeFile、Shell语法②AndroidStudio编译So原理③音视频的采集编码④Opencv原理和应用⑤QQ音视频通话掌握的核心技术⑥人工智能和智能家居三、作为移动开发的我们该如何突破瓶颈呢?学习自定义控件、NDK、架构设计、混合式开发工程师(React native,Weex)、性能优化、完整商业项目开发,学习技术不仅要知其然,还要知其所以然,我们的目标就是要成为Android高级工程师总结:首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字节跳动面试官一招差点KO我,一共面试了3轮(5年经验),艰难拿下2-2职级offer!
前言
我从大学毕业开始做Android开发,现在已经五年时间了,现在在山东老家济南做Android开发。

这三年里面,也只是一心在做Android开发,其他语言接触的并不多,了解点JS之类的。

现在感觉Android开始不像以前那样好做了,也可能是现在年纪慢慢大了,要考虑的事情变多了的缘故吧。

不知道以后应该何去何从,总是感觉做Android或者说做程序员一直处在一种不稳定之中,在一些中小公司里面,可能工作一年两年就因为各种各样的原因而离职。

马上就要结婚了,该买房了。

济南的房价一直在涨,而自己的收入还是这么不温不火的,加上这不稳定的工作,让人对于前途实在是乐观不起来。

再加上今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。

但是,不得不说,这次字节的面试真的太难为我了,可以说是和面试官大战了3个回合,不过好在最后给了offer。

我个人情况是5年Android开发经验,字节跳动定级2-2(年薪是50-100w左右含加班费和股票折现,不含车餐房补)的样子,我是拿到了年薪60w+,13薪。

下面是我的面试经历,与学习经验分享,希望能带来一些不一样的启发和帮助。

我与字节跳动面试官“大战”3回合,胜!
我的学习经验
1—4年大学
•Java
无论什么级别的Android从业者,Java作为Android开发基础语言。

不管是工作还是面试中,Java都是必考题。

如果不懂Java的话,薪酬会非常吃亏(美团尤为重视Java基础)
详细介绍了Java泛型、注解、并发编程、数据传输与序列化、高效IO、容器集合、反射与类加载以及JVM重点知识线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种引用类型、GC 分代收集算法 VS 分区收集算法、GC 垃圾收集器、JAVA IO/NIO 、JVM 类加载机制的各大知识点。

•筑基必备
Android架构师筑基包括哪些内容呢:
1.深入 Java 泛型.
2.解深入浅出
3.并发编程
4.数据传输与序列化
5.Java 虚拟机原理
6.反射与类加载
7.高效 IO
8.Kotlin项目实战
大学1-4年架构师筑基必备
•学习笔记整理
架构师筑基必备目录
架构师筑基必备第一章
自己工作1-3年,3-5年规划
我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写
代码的人。

这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。

我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的
Coder的阶段。

工作1-3年需要哪些知识呢?
◆ AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;
◆ Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;
◆ 多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等;
◆ 事件分发:弹性滑动、滑动冲突等;
◆ 玩转View:View的绘制原理、各种自定义View;
◆ 动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理;
◆ 懂性能优化、熟悉mat等工具
◆ 懂点常见的设计模式
这个阶段须掌握图中“Android核心高级技术”;还要多阅读Android源码,阅读官方文档并尝试写技术文章,需要有一定技术深度和自我思考。

在这个阶段的学习过程中,有2个点是比较困扰大家的,一个是阅读源码,另一个是自定义View以及滑动冲突。

如何阅读源码呢?阅读源码的时候不要深入代码细节不可自拔,要关注代码的流程并尽量挖掘出对应用层开发有用的结论。

另外仔细阅读源码中对一个类或者方法的注释,在看不懂源码时,源码中的注释可以帮你更好地了解源码中的工作原理,这个过程虽然艰苦,但是别无他法,然而这个过程的收获也是其他学习方式不可替补的。

◆ PS:我这里也是整理了一份源码笔记,有需要的可以在我的【GitHub】里查看!
工作3-5年规划
五年又是区分程序员的第二个门槛。

有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,热衷于研究各种技术实现细节、看了N多好
书、写一些博客、在Github上分享技术。

这些人在五年后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的
人物。

◆ 继续加深理解“稍微深入的知识点“中所定义的内容
◆ 了解系统核心机制:
1.了解SystemServer的启动过程
2.了解主线程的消息循环模型
3.了解AMS和PMS的工作原理
4.能够回答问题”一个应用存在多少个Window?“
5.了解四大组件的大概工作流程
6.…
◆ 基本知识点的细节:
1.Activity的启动模式以及异常情况下不同Activity的表现
2.Service的onBind和onReBind的关联
3.onServiceDisconnected(ComponentName className)和binderDied()
的区别
4.AsyncTask在不同版本上的表现细节
5.线程池的细节和参数配置
6.…
◆ 熟悉设计模式(常用设计模式)架构意识。

工作3-5年规划
学习笔记内容
热修复设计、插件化框架设计、组件化框架设计、图片加载框架、网络访问框架设计、RXJava响应式编程框架设计
字节跳动面试经历
第一轮:
•起手式:自我介绍
•介绍下简历上的项目
•线程池的使用,线程池如何实现的,线程池的原理
•Thread 的join 函数的作用
•java 线程间通信的方法有哪些
•Android handler 机制,源代码
•juc atomicInteger 类为什么能保持线程安全,普通的变量为什么不能保证线程安全
•java 内存模型(问了我有没有阅读过JSR 133的官方文档?并没有,很惭愧,感觉学的路子有点野)
•java 内存分区
•concurrentHashMap 的原理
•100以内,10万以内,10万到无穷个数,三种情况排序,选择排序算法•你有什么要问我的?(问了一些技术相关的问题)
第二轮:
•愿意不愿意来杭州
•自我介绍
•java的gc(gc工作原理,gc回收机制,gc内存分配)
•http和https区别
•http报文结构
•http 报文头部含有什么
•你最拿手的项目是什么(回答了和同学做的开源项目,并且介绍了如何做的)
•手写代码:跳台阶问题
•你有什么问题要问我吗?
第三轮:
•你对字节面试官的印象如何?你从面试官上学到了哪些东西
•你每天的生活安排是什么样子的?
•你为什么选择来阿里?
•字节的开源框架用了哪些呢?说说weex?
•你以后的技术规划是什么样的?
•你最有成就的项目是哪个?
•为什么选择android开发?
•为什么选择nodejs开发作为第二条技术路线?
•你有什么要问我的吗?(问了面试官入职培训)
如果你过五关斩六将,成功地通过了所有的技术面,那么恭喜你,你离升职加薪、出任CEO、迎娶白富美、走向人生巅峰又进了一步。

但是还没有到谈薪资待遇的时候,最后还有一个考验:HR面试。

基本所有的大公司都有这一轮的面试,不要小看HR面试,很多公司的HR对于面试者都有一票否决权的----即使前面的面试对你的评价再高。

所以,这轮的面试也必须重视起来,HR面试主要问的是几点:
•简历中写的过去工作经历的离职原因
•当前公司薪资待遇
•期望能到怎样的一家公司
•个人未来的发展方向
我专门提一下第2点。

可能有人比较排斥也不想说这个,我个人倒是持开放状态,问了就说了,当然一些的夸大还是必要的,当前公司薪资待遇多报个一千块钱完全没问题(毕竟是一家互联网公司总多多少少有些补贴啊什么的嘛)。

因为这和你在新公司能拿到的薪水关系不大,新公司能拿到的薪水的决定因素是整个公司的薪资情况以及根据你的面试情况在公司的定位,都是有固定的薪资范围的。

HR问这个主要也就是心里有个数并且看你是否诚信----有些公司入职时会要求你提供最近一家单位的银行流水号。

HR面试就说到这里了,总结起来其实就是四个字:滴水不漏。

整个面试过程态度积极向上,不要有任何悲观消极的态度(尤其在谈到以前公司情况的时候,即使有再多的不满),就不会有问题。

相关文档
最新文档