我去哔哩哔哩总部面试Android开发,竟然...

讲讲目前形势

1. 开发者的门槛越来越高:
小厂的机会少了,大厂的业务趋于稳定,短期内在移动端不会出现爆发性的增长,那随之而来的就是移动端招人越来越理性,门槛水涨船高。这两年看部门移动端校招,除了技术本身都很扎实以外,清一色985/211学霸+竞赛成绩+各种奖项+NB实习经历,社招基本集中在国内主要的互联网公司和几大手机公司中。并且现在大部分公司受限于本身的业务规模和在移动端的投入,技术和国内主要互联网公司的差距越来越大,换句话说,小公司生存会越来越困难,之后从小公司向大公司跳槽也会越来越困难。
2. 对开发者的要求越来越高:
小厂生存越来越困难,那势必会对开发者提出更高的要求。相比之前,对于终端开发者的技术要求会越来越宽广,最好是个多面手,是个大前端。大厂内部的压力也非常大,数据想要有大幅度的提升也越来越困难,因此更多的方向,更多的需求也就在所难免。现在的终端开发者处理的问题比之前更多更复杂,需要Cover的面更广,需要学习的更快更深入,并且在技术之外,还需要有足够的软实力支撑。在这样的要求下,很多时候,能力的差距已经不是用勤奋就能弥补的了,况且大部分人本来就谈不上有多勤奋。
面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!
我去哔哩哔哩总部面试Android开发,竟然...
文章图片

如果想变得优秀那就去看那些优秀的人在学什么,做什么,想尽一切办法和他们交流;多出去看看这个世界,然后把自己逼到往死里学。
如今已是十一月份了,过完年就是春招和金三银四了,大批的届毕业和未就业的程序员生即将进入求职面试的紧张阶段,在这里分享我B站成功上岸的面试经验。
这篇攻略是我去B站面试,以及总结各大佬面经总结。其中大部分都是大企业面试常问的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式,希望对大家找工作有帮助!
我去哔哩哔哩总部面试Android开发,竟然...
文章图片

面试准备 前面找一些小公司面试练练手,找找感觉,总结统计下不会的问题,然后再去找相关资料学习相关知识点,我这2个月大概面试有近10家公司吧,一共拿了3家offer,前面很多都没过,但是为后面拿更好的offer做准备
我是如何准备的呢?
  • 首先就是简历,文末有我整理出来的简历模板,参考下,我是参考了里面的模板修改了,然后在脉脉里找了字节的内推人员,他再帮我简历的一些问题给出了建议
  • 投简历,我用的是Boss直聘,大家也可以用智联招聘、脉脉内推等
  • 学习知识点,我下载了CSDN,关注了一些博主,也可以在里面搜到相关的知识点,如果找视频我一般在软件哔哩哔哩里找相关视频学习; 算法一般在“力扣”、“牛客”里刷题,CSDN、牛客也可以找到一些面经参考;
前面我都是按部就班的准备,后面B站一面过了准备二面的时候,我特意告诉HR我要准备一个星期后再二面,这一个星期我的节奏是,早上起来在地铁上找一篇系统的知识点视频看。
比如redis,到公司后正常上班,下班后地铁里也是看视频,到家后看面试视频,并把不会的知识点列出来,我一般看3-4遍,第一遍简单的过了一下,第二遍我在遇到不会的知识点的时候记录下来,后面查资料,因为有些答案视频没有,而且我不确定面试者答的是否准确,是否完整,第三遍我主要是学习下清华面试者的风格,他给我的感觉就是自信,他回答任何问题都是波澜不惊,即使不会的问题他说不会你也不觉得反感,学学他的逻辑性,语速。
第四遍我带着我媳妇一起听,我会把这些问题用自己的回答告诉我媳妇,甚至做一些补充,她是做前端的,我会举例子,如果把她教明白了,我觉得我自己掌握的应该是ok的;晚上睡觉前我也会看听视频直到睡着,加深印象;没有压力就没有动力,如果不是准备B站的面试,我可能做不到这么努力认真的学习吧。
平时的学习积累也很重要,平时也不要懈怠哦。
我去哔哩哔哩总部面试Android开发,竟然...
文章图片

面试过程 2021.5.20一面 : (几个小时之后通知二面) 1、自我介绍(工作情况、项目概况、用哪些技术、自己负责什么、擅长什么、优势是什么)
答:领导你好;我叫,16年本科毕业于**大学;毕业后在合肥卫宁,一家医疗软件公司工作,技术上前后端、数据库包括项目部署都做,属于全栈开发,18年来到上海入职京东一直到现在,做的是线下商场的后台及接口开发; 老的项目还是mvc,新项目都做了前后端分离,前端用到H5、小程序JQuery、EasyUI、VUE、Angular,后端用到.Net Framwork 4.5,4.6 、NetCore、Java,数据库用到SQLService、Mysql、MongoDB、Redis,中间件用到RabbitMQ消息队列,在公司是核心开发的角色,负责老项目的维护及二次开发,和其他开发相比,我的优势在于沟通交流能力比较强,还有我的责任心和学习能力也是比较强的,如果有幸加入B站,我相信我能快速融入团队,快速掌握公司相关的技术;谢谢领导。
2、介绍下你做的项目及你在工作中的定位
答:我负责一些老项目的维护,像商场、商户的后台、内容管理、广告、推荐位后台、游戏的后台和接口;对外的开发平台接口;新项目包括应用插件、勋章等项目;老项目是主要开发的角色,新项目一般是项目负责人的角色,负责项目的表结构设计、任务的安排及分配,夸部门之间的协作调度。
3、离职的原因
答:1、目前工作5年了,技术上也遇到了瓶颈,目前的公司做的事情大部分都是重复的增删改查,希望换个环境,拓宽下技术和视野,也希望学习更多,更新的技术
2、目前在职级上虽然晋升了,但是在上很难晋升,因为公司的领导都是6、7年的老员工,我自己也希望做管理开发岗
基于以上两个原因,想换一个平台。
4、未来的规划是什么
答:1-2年内花半年左右的时候熟悉公司的技术栈,业务,再花一年多时间沉淀,深入的学习所用的技术且时刻关注学习新技术;2年以后如果有机会我希望可以做开发管理岗,自己带团队。
5、结婚没、住哪,现在的公司在哪
答:已结婚,定居上海,现公司在上海北外滩。
2021.5.27二面(技术) : (一周后通知三面) 1、设计表结构的时候要考虑哪些问题
答:我们目前用的数据库是MongoDB
(1)设计表的时候首先要关注表字段的可扩展性,例如性别这个字段,正常可以用bool类型,true为男,false为女,但是如果是未知呢,所以尽量避免用bool类型,可以用int类型或者枚举类型代替;
(2)其次需要考虑表的可维护性及可读性,例如主表里有奖品信息的字段,如果奖品有多种类型呢,甚至对应多个奖品的情况,我这边选择独立一张表出来通过字段关联存放奖品信息而不选择放在主表字段里
2、关系型数据库和非关系型数据库有什么区别,你们现在用的是哪个数据库,为什么
答:关系型数据库包括SqlServe、MySql、Oracle;非关系型数据库有MongoDB、Redis
(1)nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型
(2)nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库
(3)关系型数据库可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
(4)关系型数据库支持事务,安全性高
我们存储的会员数据量比较大,且每个月都产品过亿的订单及日志数据,所以选择非关系型数据库MongoDB
3、数据库查询优化了解吗,说说怎么优化(索引相关)
答:可以先在查询分析器中查看执行语句的时间,分析语句是否用到了索引,索引是否生效
(1)尽量避免select*,需要哪些字段就查询哪些字段
(2)一些公用的数据可以先拿到内存里,后面要用直接拿,而不是每次用到的时候重新去数据库取,主要是减少数据库交互,提供性能
4、说说索引(聚集索引、非聚集索引,联合索引、最左匹配原则、非聚集索引要回表查询)
答:索引分为聚集索引和非聚集索引,用非聚集索引查询一般需要再次回表查询,因为非聚集索引存储的是主键ID,聚集索引查询就好似书的目录,用索引可以快速定位某一块区域数据,如果不用索引就需要全表扫描;还有多个字段组成联合索引,一般要符合最左匹配原则;
in or 关键字就不走索引,like模糊匹配,前通配不走索引,后通配走索引
5、如果用非聚集索引怎样可以不用回表呢(select id from a where name="111")
答:如果只查询ID,用非聚集索引就不用回表,因为非聚集索引上就存的是ID
6、为什么使用索引后查询效率高呢
答:这个就涉及到索引和数据的结构了,类比书籍的目录页,索引通过B+树的结构存放数据,横向数据越多,纵向的高低越低,和磁盘的交互就越少,查询得速度就越快
7、有用过redis吗,你项目中使用场景是什么?说说你对redis的理解
答:我们项目中用到的redis场景不多,一般用于存储计算的数据,我们有些通过BI统计计算的数据,每次计算耗时比较长,这些数据可以存放到redis中,设置一天有效期;后面访问的时候就比较快了
redis的类型有string类型,hsah,可以用于购物车的场景,List,朋友圈展示,set,共同好友,zset 排名;
【我去哔哩哔哩总部面试Android开发,竟然...】redis因为数据都在内容中所以查询起来非常快,但是它会通过RDB和AOF持久化数据到磁盘里去
RDB是在指定的时间间隔内生成数据集的时间点快照,它保存了 Redis 在某个时间点上的数据集
AOF 文件是一个只进行追加操作的日志文件
一般当redis挂了数据恢复时会组合来用,先用RDB恢复某个时间节点的数据,后面一部分丢失的数据再用AOF数据去恢复
8、java项目做过了多久时间,能自己独立搭一个java项目吗
答:目前刚接触java相关项目,用了2个月左右,参考其他项目,框架由架构师搭好,我们主要还是写的业务代码,目前还不能自己独立搭一个java项目,但是我相信给我一定的时间学习,是可以独立完成项目的搭建的。
9、你有什么想问的吗(问了开发语言、项目概况)
答:1、我想了解下咱们的项目大概是做什么的(内部的一些库存盘点等系统)
2、咱们用的开发语言是什么(主要用java、也会有一些go语言相关的)
2021.6.7三面(项目) : (三天后通知四面)
1、介绍下你现在的研发团队的情况(产品、运维、前端开发、后端开发、测试)
答:8个左右产品,3个运维,1个DB,10个前端,25个左右后端,10个左右测试
2、现在这家公司做什么业务?你负责哪些项目?
答:做的是线上商场的系统,用户端主要是H5和小程序,会给商场提供一些功能,包括商户的活动,优惠,团购等;提供发优惠券、问卷、一些游戏等功能;我主要负责的项目有后台商场商户的维护二次开发、内容管理、插件整合后台售卖,游戏的后台,对外的开放平台接口等;
3、说说你从0到1的一个项目,你在项目中承担什么角色
答:前端时间做的勋章的项目,功能大概是会员消费一定金额后完成任务后点亮对应的勋章并发放奖励,用户端用小程序,后台页面用VUE,后台接口用java,我承担的是项目负责人的角色
(1)根据产品提出的需求及UE设计项目的表结构
(2)根据需求细分任务到具体责任人,整体把控项目的周期(1个半月左右)
(3)基础控件数据的提供;核心业务逻辑的开发,vue页面、java接口的demo页开发
(4)跨部门协调以及项目的部署
4、如果让你重新做一次你举得可以改进的项目,你觉得有哪些点可以优化的
答:我的一个客户经理项目需要跨表查询,当时领导提供的方案是在MongoDB上建视图,MongoDB4.6及以上版本才支持视图,且查询效率慢,如果重新做我觉得可以换成Mysql关系型数据库,因为可以多表关联查询
前端用框架,这个项目的前端用的html+原生js,这里的动态查询写了几百行的DOM元素操作,费时费力。
5、一个数组如果让你找到最大数,你会怎么弄?
答:减少空间的话可以用冒泡排序找;减少时间的话可以用二分法或者分段找到每一块最大的再继续找。
6、如果我们现在要做一个库存盘点的系统,你怎么设计表结构,设计哪些表
答:库存表包含的字段有 物品的类别,名称、编号、初始数量、剩余数量等信息;
分配表包含的字段有 人员信息,包含手机号,微信号,名称等、物品类型、物品名称、编号
还有一些分配记录表,日志表,记录分配和修改的信息,方便后面做库存盘点统计用
7、公司采购一批电脑,新员工入职领电脑后本人扫码确认领取,这块代码你如何实现(后台设置领取人信息、微信扫码确认,获取微信相关信息和后台设置的人员信息比较,如果一致则确认本人已领取)
答:可以结合微信小程序,员工入职分配电脑,后台录入相关人员,相关人员拿到电脑后扫码确认领导电脑,扫码后微信授权,获取人员相关信息与后台录入的信息比较(姓名、手机号、微信号等);如果一致则修改后台确认字段参数,如果不一致做出提示并通知相关人员
8、你有什么想问的吗(问了团队的人员情况)
答:咱们目前的团队有多少,还准备招几人呢;咱们的内部项目已经启动了吗
2021.6.16四面(部门主管):(一周后通知HR面) 1、说说你们公司的人员结构和你的位置及承担的角色
答:见3面1
2、项目中遇到的难点,如何解决,以后怎么避免
答:在去年疫情刚开始的时候刚来上海的前两个星期在家办公,我做的客户经理项目要上线,当时测试环境测得差不多了,发到线上测试的时候发现数据只能读不能写,因为测试环境数据库是单台的,线上是主从多台的,因为是新项目、4.6以上版本才支持MongoDB视图,MongoDB的驱动升级到了最新,网上资料也很少,查阅了相关资料和问同事最后阅读了相关源码后发现需要加一个参数才可以写到主库里,中间时间大概花了3天左右,但是上线一个星期后另外一个部门的领导告诉我们MongoDB官网又升级了驱动,现在直接可以用了,不用加那个参数了,我可以认为刚好那几天我们升级的最新驱动是官网发布的有问题的驱动,一周后他们解决后又发布了最新驱动; 这是我遇到比较坑的一个难点吧。
后续想要避免这样的问题,我们得把现在稳定运行的驱动打成自己的Nuget包,并将此次问题上传公共文档(wiki),后续有其他部门同事也需要使用MongDB驱动的时候可以用我们内部打的驱动避免不可预知的意外,同时,我们测试环境的生产环境尽量保持一致,避免某些问题上线后才能发现
3、在项目中如何对接(对接前端,第三方,其他后端应用)
答:(1)大部分项目已经做了前后端分离,我们作为后端开发写完接口提供swagger文档给前端开发,里面有具体的接口地址,入参,出参,其他不清楚的地方在单独沟通下
(2)对接第三方我们提供对外统一的文档地址,里面提供了接口地址、加密方式demo、客户端dll、调用示例(java .net、python等),入参,出参等
(3)对内调用其他后台接口,一般对方提供Nuget客户,客户端里有入参,返回值,如果没有客户端需要自己这边根据对方提供的入参,返回值调用接口
4、平时怎么跟同事沟通交流
答:我觉得工作中,除了责任心,工作能力之外最重要的就是沟通能力,这取决于人的性格、更取决于沟通的技巧
(1)不要抱着有事我找你,没事我都不认识你的态度去交流,平时需求对接正常沟通交流,人家有事找你,即使不是你负责的在不耽误其他事的情况下帮忙解答一下,早上上班的见面了打个招呼,吃饭的时候聊聊天,或者经常跟自己组的人或者关系比较好的人一起吃饭聊天,遇到不熟的也可以聊聊,这样你后面沟通的时候很轻松,而且作为程序员人脉也很重要,以后不在一个公司了,技术问题可以相互交流,后面想跳槽也可以相互内推
(2)多分享分享,可以是工作中的经验,也可以是掌握的技术知识点,当然人际关系更多的是物质的分享,作为程序员工资也不低,不在乎那几十块钱吧,平时买点零食、水果之类的啊,边上的人发一发,俗话说拿人手短,不管怎么样人家心里觉得你这个人不错;前段时间我第一次做java要接消息队列,没弄过,不会弄,我找java架构师,他比较忙,总是敷衍一下,或者发些链接资料让我看,我还是搞不定啊,等下班晚上看他在吃外卖的时候,我买了瓶饮料过去:“春哥,喝瓶饮料,顺势说我接的队列的还有问题,有时间了帮我看下呗”,果然第二天写了个demo给我,到我电脑前帮我运行起来了,搞定。
5、以后的规划
答:我想1-2年内在掌握现有业务技术的前提下学习更多更新的技术;后面有机会的话也是希望做开发管理岗位;俗话说不想当将军的小兵不是好小兵,后面如果有机会也会去独立带团队。
6、离职的原因
答:(1)目前用的技术并不新,且在公司呆了3年左右,现在大部分都是业务代码,重复的增删改成,现在想去换个环境接触下不同的技术及业务,学习更多的东西
(2)目前的同事在公司的年限比较久,稳定性也比较高,目前我想做开发管理岗在现公司的几率也不大,也希望在新公司掌握现有业务后如果有机会也是向上升吧;
7、现在的薪资多少
答: N*14
8、你有什么想问的
答:咱们的主要开发语言是java吗,因为我是做.net的,中间有过度学习期吗
2021.6.25HR面 : (上午面完发完流水,下午5点最后谈薪资) 1、说说你最值得说的项目,场景是什么,周期多久
答:我做的勋章项目吧,会员消费一定金额后会点亮一些勋章,并且在勋章墙里可以看到一些勋章的点亮进度,比如我今天购物结束准备回去了,看到我的勋章墙里有一个勋章显示990/1000,再消费10元就能获得这个勋章了,那我再买个10块钱东西吧,可以促进会员消费;
这个项目的背景是销售已经做了ppt把这个项目卖出去了好几家,已经跟公司签了合同了,所以需要我们紧急开发,周期在一个半月左右,我是项目负责人
2、后面的规划是什么
答:见四面5
3、你和那些晋升特别快的人比起来有哪些不同(学习能力的不同,但是勤能补拙)
答:我觉得咱们大部分人的智商、学习能力都差不多,但是总有那些厉害的人,学历高,学习快,能力强,晋升快,我和他们比起来肯定有差距,但是我觉得这些固然是你的资本,但是我们学历能力也还可以,加上我们肯学,我们在某个方向或者某块技术也能成为天花板的存在,最近流行一个字词"躺平",我不赞同,我觉得现在的人,尤其是我们程序员,即使不能成为某个技术某个时代的引领者,也要成为这些最新技术的学习者,跟上时代的脚步,不停的学习,这样才能提高你的价值。
4、期望薪资是多少?近一年的工资流水发我下
答:期望薪资28K
5、以前都是远程面,今天过来主要是看下工作环境,熟悉下路线,本着双方都负责的态度见面下,加下微信
最终历时一个多月2021.6.28我拿到了B站的offer;
虽然卡我薪资了,没达到我预期,但是也可以接受吧,因为我去年年底晋升加薪了,说我才涨薪半年,原来是14薪,现在是15,总包涨幅30%左右,试用期6个月,每天15餐补,8点半以后有加班餐
转正后每个月多1000补贴
我去哔哩哔哩总部面试Android开发,竟然...
文章图片

大厂面试题总结 算法题
大多出自 LeetCode ,LeetCode HOT 100,最好自己过一遍,理解最优解
编程题
  • 用 Class 实现 EventEmitter,要求拥有 on,once,emit,off 方法
  • 实现 deepClone,要求能成功克隆带有循环引用的对象
  • CSS 实现一个宽度为浏览器1/2,宽高比为 2:1 的盒子
  • 实现 sum 函数
    sum(1)(2)(3) == 6; // true sum(1, 2, 3) == 6; // true

  • 实现 sum2 函数
    console.log(sum2(1)(2)(3)()) // 6 console.log(sum2(1, 2, 3)()); // 6

  • 用尾递归实现 fibonacci 数列
  • 实现 co 函数
  • 实现以下功能,当对一个 arr 做 push 操作时,会自动打印一行提示消息
    const arr = [1,2,3]; arr.push(4); // arr pushed a new element: 4

  • 代码实现中断 Promise 的运行
  • 有一组图片,实现后一张图片必须等到上一张图片加载完毕,才能开始加载
  • 为 Test 类添加方法,打印指定内容
    class Test { constructor() { this.person = { name: "jack", age: 38, position: "CTO" }; } // ...... }const test = new Test(); for (const ele of test) { console.log(ele); } // [ 'name', 'jack' ] // [ 'age', 38 ] // [ 'position', 'CTO' ]

  • 实现 handler 函数,遇到 b 和 ac 都要去除
    console.log(handler("aabaa")); // 'aaaa' console.log(handler("abaccbc")); // 'c' console.log(handler("aaccc")); // 'c' console.log(handler("aaabccc")); // ''

  • 实现 decode 函数
    decode('HG[3|B[2|CA]]F') === 'HGBCACABCACABCACAF' // true

  • 实现 _bind 函数,使打印 success
    function Animal(name, color) { this.name = name; this.color = color; } Animal.prototype.say = function() { return `I'm a ${this.color} ${this.name}`; }; const Cat = Animal._bind(null, "cat"); const cat = new Cat("white"); if ( cat.say() === "I'm a white cat" && cat instanceof Cat && cat instanceof Animal ) { console.log("success"); }

  • CSS 实现圆环进度条效果
  • 说出以下打印内容
    console.log(-1 >>> 32); console.log(-1 << 32); console.log(1 >> 32); console.log(5 >>> 2); var a = { n: 1 }; var b = a; a.x = a = { n: 2 }; console.log(a.x); console.log(b.x);

简答题
  • 实现 F12 开发者工具的检查(inspect)功能
  • 实现 把一个盒子从一个区域拖放到另一个指定区域中
    • 盒子一部分在区域内,一部分在区域外,该如何处理
    • 简述几个封装好的关键方法
  • 开发完的项目,在微信浏览器上白屏,该如何排查
  • 如何统计一个页面上哪些区域用户点击次数最多
  • 如何根据按钮级别的粒度,设计用户权限,例如:A 可以访问按钮,B 不可以
  • 如何对一个网页内容进行自动化截屏,如何解决登录限制
  • A组件包裹B组件,B组件包裹C组件,它们的 componentDidMount 触发顺序如何
  • React setState 到底是异步还是同步的,其原理是什么
  • React Hooks 的使用有哪些注意事项
  • React 的合成事件机制
  • 简述 React 类组件的新老生命周期,谈谈 React Fiber 架构的引入
  • 详细介绍一下 Redux 状态管理,如何和 React 组件连接
  • React HOC 的用途,什么是装饰器模式
  • Mobx 的实现原理
  • Koa 的中间件原理,介绍一下 compose 函数
  • 介绍 NodeJS 的 EventLoop 机制,process.nextTick() 的作用
  • NodeJS 是单线程还是多线程,都有哪些线程,JS 为什么是单线程的
  • CommonJS 的实现原理
  • NodeJS 中存在哪些流,怎么理解 pipe() 及其优点
  • require 的解析规则
  • 介绍一下负载均衡,NodeJS 的 cluster 和 child_process 是什么
  • webpack 是如何进行打包的
  • webpack 动态 import 是如何实现的
  • 如何编写自己的 loader 和 plugin
  • 简述 webpack 配置文件中的 externals,UMD 了解吗
  • 介绍一下 DNS,什么是迭代查询和递归查询,什么是一级域名、二级域名
  • HTTP 首部(Header)和实体(Body)的分隔符是什么,用正则如何匹配
  • HTTPS 的详细过程,什么是数字证书,消息摘要,非对称加密,Hash 算法
  • 如何实现 Tab(标签)页之间,客户端与服务器的实时通讯
  • HTTP 状态码:301、302、307 的区别
  • 简述浏览器的垃圾回收机制,什么是强引用、弱引用、循环引用
  • 简述 requestAnimationFrame 和 requestIdleCallback 的作用
  • CSS 选择器的解析顺序是从右到左,还是从左到右,为什么
  • click 事件在移动端有什么问题,如何解决,你在移动端还遇到那些坑
  • 简述 JWT 的生成过程和优缺点,怎么主动注销 JWT 和续签 JWT
  • 通过什么检测网站的性能,有哪些指标
  • 如何查看网站的 Ajax 请求是由哪行代码发出的,一个元素都绑定了哪些事件,Chrome 调试面板 F8,F10,F11 各代表什么
  • 说说你对 jpg、gif、jpeg、png、webp、base64 URL 的了解
Android学习的方向
  • 基础+底层原理
看似最枯燥、最基础的东西往往具有最长久的生命力
像数据结构,算法这类东西,还有有一些计算机原理之类的知识,这些东西都是编程和实践的根本。他们看似枯燥和基础,但是具有最长久的生命力。
不要天天谈什么框架,什么库,框架每年层出不穷,可是扒下框架那层炫酷漂亮的外衣,里面还是那些最基础的知识和原理。 就是这些算法,数据结构,计算机网络,计算机原理这些看似基础的东西。如果这些掌握扎实了,你才有更加深入的可能。
  • 学习一线大厂的各项技术
大厂是我们的技术先驱,不仅仅是各种技术,还有很多令你大开眼界的使用方法,学习这些有利于自己竞争力的提高,深入理解后也可以提升你的学习效率
  • 定期面试
光学习了大厂的技术还不够,如何了解当下Android市场需要哪些技术呢?
定期的面试足以让你了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,也可以督促自己学习提升(小伙子,你这技术有点落伍了呀…)
万一拿到了高薪Offer,岂不是更赚?
  • 多看大佬的学习笔记,学习大佬的设计思想
之前我跟一位大佬交流后,就拿到了他做的 《Android开发核心知识点笔记》
纯目录页都非常非常的长……大佬,不愧是大佬……
现在,《Android开发核心知识点笔记》的最新版,可以在这个GitHub上查看。
我去哔哩哔哩总部面试Android开发,竟然...
文章图片

我去哔哩哔哩总部面试Android开发,竟然...
文章图片

我去哔哩哔哩总部面试Android开发,竟然...
文章图片

  • 配合各种资料辅助学习
现在不仅仅是开源,还有各种各样的资料也是非常之多,可以说是非常的全面了
不过还是非常杂乱,很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
这里推荐大家找找培训机构,虽然大家对培训机构褒贬不一,但不可否认的是,有些培训机构也是为大家发现、整理了很多全面且系统的资料,白拿一波还不是美滋滋?
结尾 天道酬勤,只要你想,大厂offer并不是遥不可及!
需要简历模板的小伙伴可以点击【这里】,免费领取。
希望我的经历能为你带来帮助,如果有问题,请在评论区留言!
我去哔哩哔哩总部面试Android开发,竟然...
文章图片

    推荐阅读