热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ios和安卓手机游戏开发!34岁安卓开发大叔感慨,实战解析

前言全网唯一一份,对标阿里P7年薪60w的Android高级工程师学习进阶路线(图未完全展开,怕大家看不清楚)࿱

前言

全网唯一一份,对标阿里P7年薪60w+的Android高级工程师学习进阶路线(图未完全展开,怕大家看不清楚):
本篇文章都会围绕这份脑图来写,详细的介绍你处于哪个阶段该如何进阶,以及年薪层次高低对应该学的的技术。


我以为是HR一面,结果是技术,没想到啊,没想到!



  • 1、描述Activity的生命周期。

  • 2、描述一个Activity启动另外一个Activity的生命周期

  • 3、Activity标签可以配置什么

  • 4、IntentFilter里面的标签可以干嘛

  • 5、Service怎么启动

了解IntentService吗?


  • 6、几大控件有

  • 7、存储数据的方式有

  • 8、Intent可以干嘛

  • 9、Sharedpreference里面的apply和commit有什么区别

  • 10、ContentProvider用过吗?为什么要用这个

  • 11、ASyncTask用过吗?知道是怎么实现的吗?

  • 12、线程池知道吗?怎么创建?底层怎么实现?

  • 13、Set、List、Map区别,Map底层怎么实现的

  • 14、重写View怎么重写?

  • 15、快排实现

  • 16、实现两个链表表示的整数相加(空间复杂度要求很低)

看到还有很多程序员连面试流程都没有彻底弄清楚,今天,我们以阿里为例,来聊聊互联网大厂的面试流程和过程!

本篇主要还是聊聊社招的面试过程!阿里以及其他的互联网大厂的技术类社招面试,通常情况是 4 个轮次。第一、第二面是技术面,第三面是主管面试,第四面是 HR 面试。对于目标级别在 P6+ 的候选人,我们会增加至少一轮的跨团队 Review 面试,因为涉及招聘委员会(Hire Committee)的定级流程,所以要复杂一些。接下来的内容,主要针对通常情况下 P5~P6 的面试来介绍,大神请直接忽略。


01 技术面

1. 个人介绍和基础知识考查

这部分算是必备技能。我个人倒是倾向于弱化基础知识的考查,毕竟每个候选人的背景不同,应该更看重聪明程度、学习能力、沟通理解力等,基础知识只能证明他不是一个优秀的工程师,却无法证明他是一个优秀的工程师。
2. 项目经历考查

从这个阶段开始就格外重要了,因为面试官之前并不一定完整浏览候选人的简历,所以聆听候选人对项目的介绍是了解候选人的最主要途径。在这个过程中,面试官试图刨根问底,这跟各公司内部的技术评审很相似。几个关键点,希望你格外注意:


  1. 对项目背景的了解程度,讲不清楚需求从哪里来是非常可怕的,这说明你更多只是一个执行者,不是负责人,且缺少对于项目整体的思考。
  2. 对需求的合理性进行分析,一味听从 PM,不能把控需求的研发是很可怕的。
  3. 对技术方案设计的调研和选型,我们更希望看到你的方案是经过充分思考、调研、对比、论证的,通过这个过程,可以看到候选人的系统设计功底,是否对业界技术有足够了解,对开源技术的掌握情况,是否愿意应用开源技术。哪怕你的项目只是一个简单的业务系统,那么仍然应该有很多亮点可寻,否则这段项目经历可能会减分。
  4. 取得的成效。很多工程师只看重过程,不看重结果,这是不可取的。

3. 编程技术考查
在我的团队中,我要求每一轮技术面,都至少要有 1 道编程题目。一方面,我们非常看重侯选人的代码风格、优雅程度,还有对边界条件的考虑,这些都是好的程序员必须具备的素质。对于代码混乱、边界考虑不清的人,我们会认为他没有足够的编程素养和追求,在逻辑思维层面,也有所欠缺。**这样的候选人进入团队,短期可能造成 Bug 多、项目质量差等影响,长远来看,不利于合作开发、项目传承等。**另一方面,**我们非常看重数据结构、算法等的高效实现。能够快速设计出高效的程序,这体现了候选人日常的深厚积累,还有对编程的极致追求。**前不久就有一个典型案例,我们的运维同学发现一个后端模块上线后处理性能只有几十 QPS,很不理解为什么性能这么差。直到我们重新 review 代码后,才发现是个“经典”问题,即 for 循环里调用 sort(虽然是隔了几次函数调用),简单优化后,性能就可以提升 1~2 个数量级。优秀的工程师,一定会尽可能规避这类问题,几行代码的优化,就能提升用户体验、降低服务器成本、方便代码维护、减少兄弟们的工作量。
4. 逻辑题目或数学题目

这类题目的核心不在于它有多复杂,需要多少经验背景,而在于,只要逻辑清晰,认真思考,大多能得出结果,虽然不一定是最优解。我举几个例子:


  1. 一个六位数字,逆时针旋转 180 度后与之前完全相等的概率是多少?
  2. 边数是 3*4 的网格,从左下角的 A 点走到右上角的 B 点,一共有多少种不同的走法?

这类题目其实很简单,可以用编程的思路解决,比如递归(当然还有很多其他方式),也可以用概率论、组合数学的方式解决,甚至一个一个“数”也是能得到答案的。在思考问题的过程中,可以看出候选人的思维习惯,也可以看出候选人的逻辑能力。另外,这类题目其实有很多变化,如果候选人很轻松完成了回答,面试官就可以适当加大难度,比如 3*4 的网格有一个点不能经过,那么会是什么结果?这类题目看似简单,实则分辨率很高,可以充分挖掘候选人的潜力。除去上面的介绍外,候选人还应该对行业情况有所理解,包括竞品、开源项目等,这可以体现一个人的眼界和行业洞察能力,也可以看出一个人的学习态度,他是否在持续更新自己的知识储备。


02  主管面

相对于技术面而言,主管面试不会过多考查基础知识、数据结构及算法,但因为技术主管大多具备很强的技术背景,所以仍然会针对技术面过程中的一些遗漏点(可能是面试官没有考查到,也可能是候选人的回答不够完善),着重补充考查。除此之外,主管面的核心就是判断候选人除了技术能力外的其他维度,是否与团队相匹配。第一类维度,软素质能力。软素质的维度很丰富,每一次面试过程不会面面俱到地考查,但一些重要的维度一定会被照顾到。

1. 逻辑思维。
与技术面的逻辑题目类似,团队可以接受不足够聪明的人,但无法接受逻辑不清晰的人。在这个环节,可以提出一些进阶的题目,比如给候选人一个很复杂的问题,希望候选人可以尝试分析、分解,让看起来一团乱麻的问题变得清晰可实现。或者,让候选人阐述一个经历过最有挑战的问题,是如何定义问题并分析解决的。当然这类问题,一般初入职场的同学都很难回答完美;不过对于工作 2 年 + 的同学,我觉得问题的分析、分解、设定目标、规划、执行都是必备素质。这个能力很难在工作中迅速培养,它更多是通过候选人过去一二十年的学习和工作经历,一点一滴积累的,所以对于社招而言,希望候选人已经具备很好的逻辑思维能力。
2. 沟通能力。
不能有效且高效地沟通,对于团队项目是场灾难。在日常工作中,经常会看到几个同学针对一个问题争论得不可开胶,但其实他们往往没有理解对方所讲的主旨是什么,甚至对于一些名词和概念的理解都不一致,就更不要说同理心了,这种无效沟通是导致会议冗长的最主要因素。这类的面试考查,一般会依附于项目介绍或者设计题目等。

如果候选人已经具备不错的沟通能力,我们一般还会考查进阶能力:说服和影响。这是成为技术 / 项目负责人的必备能力。面试官可能会和候选人进行一个简短的虚拟沟通或辩论环节,希望候选人可以说服面试官接受某个观点或技术方案。当然,在这个过程中,面试官扮演的反派可能会用一些偏激的词汇和行为,这一方面是看候选人的沟通说服和影响他人的能力,另一方面也是压力测试,看看候选人在受到刁难时的反应,是否足够职业。创新能力。

在过去的项目中,请讲述一次发现传统方法的不足,尝试新的解决问题的方法,并获得成功的经历。这类题目非常开放,但遗憾的是,在我面试过的候选人中,近半数都是在思索一会儿后回答“没有什么”。

当然,一方面可能候选人很谦虚,另一方面,则很可能是候选人确实没有尝试做过什么创新。

互联网行业,创新是一切之源,如果真的“没有什么”,如何给 Offer 呢?

第二类维度,文化价值观。

工程师文化是务实、自驱、Follow Through(跟进到底,有始有终)。一个浮夸,不思进取,凡事不愿承担责任,不能将项目跟进到底的候选人,很难成为我们的伙伴。这类维度,其实没有太多经验可谈,每个公司都有它的文化基因,而候选人是否与之匹配,是基因和环境使然。我只说下从我个人角度,最为看重的内容,否则我会一票否决。乐观积极。不得不承认,每个人都有积极的一面和消极的一面,职业化的思维在于将积极的一面展现出来,尽量弱化消除消极一面的影响。

在日常工作中,每个人都不希望遇到一群愁眉苦脸、满腹牢骚的同事。善于合作。一位同学加入到我们的团队,他不仅需要具备优秀的个人能力,同时也需要能和其他人协同合作,起到 1+1>2 的效果。我们会考查候选人在过去的经历中,对待合作的态度,有没有接触过比较复杂、跨越多个角色或团队的合作,遇到过的协作困难是什么,遇到这类困难是如何解决的。有些候选人经常会无意识地表达出,在项目研发过程中,多人写代码,还要同步需求、设计、协商接口、联合调试,而且有 Bug 修复推动也很麻烦,如果我一个人开发早就解决了。这种思维虽然无可厚非,但希望每个人可以看得更远,大型项目是一个人完成不了的,在多人合作的背景下,如何提升合作的效率和质量才是重点,而不是过多地看到负面。追求极致。这一条很难。在我发过的这么多 Offer 中,具备这个素质的候选人也是凤毛麟角,但只要具备这个素质,我几乎一定会给 Offer。当然,追求极致不等于钻牛角尖。


03 总结

面试的学问很多,很多方面我都无法讲到(比如 HR 面,我能讲的实在不多,请表现出你最积极的一面就好)。一家之言,作为参考,总之,你具备了这些,肯定能从我的手中拿到满意的 Offer。


结尾

好了,今天的分享就到这里,如果你对在面试中遇到的问题,或者刚毕业及工作几年迷茫不知道该如何准备面试并突破现状提升自己,对于自己的未来还不够了解不知道给如何规划,可以来看看同行们都是如何突破现状,怎么学习的,来吸收他们的面试以及工作经验完善自己的之后的面试计划及职业规划。


这里放上一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套**进阶学习的视频及面试专题资料包**,在这里免费分享给大家,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~


.com/doc/DSkNLaERkbnFoS0ZF)给大家,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~

[外链图片转存中…(img-uCtGHvfF-1615727481097)]


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
author-avatar
laomeng爱家人_465
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有