中高级工程师Android开发!你的技术真的到天花板了吗?高级面试题+解析

本文主要是介绍中高级工程师Android开发!你的技术真的到天花板了吗?高级面试题+解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Android开发前几年火爆一时,市场饱和后Android程序员每一名程序员都想成为架构师,但这期间,需要付出的辛苦和努力远超过我们的想象。

我对Android工程师的调研发现:97% 的Android开发 技术人都会面临这些困境(可能也是你的困惑)

一面经历

开始面试,
(1)一来就问我tcp/udp有哪些协议(就记得http和dns解析,估计是看我专业是网络工程的)

(2)弱引用,软引用

(3)volatile关键字(突然不知道怎么回答,然后记起来了跟java内存模型相关,就说了一下jmm)

(4)多进程(莫名认为是多线程,说歪了)

(5)什么场景需要用到多进程(回答中说了推送)

(6)为什么推送需要多进程,有什么优势(不知道有什么优势)

(7)hashmap的数据结构(回答了维护一个entry数组,hash冲突,1.8中链表会变成红黑树,然后面试官没继续深究)

(8)anr分类有哪些,原因(具体不了解,就知道执行网络或者数据存储等耗时操作)

(9)anr定位(不会)

(10)activity生命周期

(11)activity从A打开B的生命周期(答错)

(12)事件分发

(13)使用过开发者选项吗(就用过显示过度绘制)

(14)kotlin相关,优点(简历上写了kotlin)

(15)kotlin协程(不会)

(16)mvp(回答不够发散,可以从mvc发散到mvp)

(17)算法题:链表有无环

事件结果

面试官:大致情况了解了,我们会根据结果认真评级的,有通知人事会及时通知的,今天大概就聊到这里了。 我:心态已崩……

我有话说

上述分享的程序员面试腾讯一面含泪把毒打经历,希望能让更多知识点薄弱的同学早点去补强。我们很多程序员都有一个大厂梦,但如何针对大厂进行面试准备,很多程序员就显得手足无措了。本文就根据自己一些见解谈谈如何准备面试。

关于笔者: 腾讯 Android 客户端开发工程狮一枚,喜欢技术、热爱开源。

细节杂谈

之所以是细节杂谈,说实话,是因为真的不知道可以写什么,网上关于面试的文章很多,大概看了几篇之后,更不知道写什么了。而根据自己的面试经验来看,发现其实有很多细节,在面试的时候都没有被好好重视起来。所以,这里针对这些细节做个总结,也希望可以对你们有所帮助。

1. 准备一个良好的开场白

首先笔者理解的自我介绍的作用是缓解初次交谈的尴尬以及过渡开场,然后才是扩展为对候选人的口才、逻辑以及表达能力的判断。

如果你实在不知道怎么说,即便是把你简历上的姓名、年龄、爱好、工作经验复述一遍,至少也是起到了暖场的作用。当然要是能基于此,表现出一定出彩的地方,那自然是再好不过,多花点心思准备是值得的。

PS:最近看到一个有趣的分享,唐僧每次介绍自己:贫僧唐三藏,从东土大唐而来,去往西天拜佛取经。其实这几句话包涵了每人都要问自己的三个问题:我是谁?我从哪里来?我要到哪里去?

2. 谦虚是必要的,因为这是礼节

很大程度上,面试官还有一个身份就是以后可能要一起共事的同事或者老板,所以切忌不要表现的心高气傲,尤其在电话面试中,很难在短时间就能了解一个人,你所表现出的态度就显得非常重要,如果和面试官产生了争论,要注意谈话技巧,可以在你的观点前加上我理解的是什么什么…

就连牛顿说他不过是站到了巨人的肩膀上了,所以永远不要觉得自己有多牛,真正牛的人只会更谦虚。

3. 大招放的好,工作何愁找

嗯,标题起的挺押韵,容笔者小小的骄傲下 😃

笔者在面试中,有时候和候选人聊了很久,觉得候选人基础知识扎实、项目经历也能娓娓道来,但是就是没有让人眼前一亮的东西,而且往往连续出现好几个类似的候选人之后,这种情况真的很难抉择,对于面试官来说,几个候选人表现的都差不多,你会发现…举个不太恰当的比喻,食之无味,弃之可惜。

所以,如果你有个大招就显得非常重要,让你和其他的候选人区别开来,而对于面试官来说,也会更偏向于你,甚至可以直接锁定胜局。

何谓大招,首先对于候选人来说,技术面试所涉及的深度和广度是很难全部顾及的,加之每个面试官的问题又会多种多样,所以与其担心被问到自己不熟悉的领域,不如挑几个自己的熟悉的技术点深挖下去,总结和形成自己的一套理论。

之前看到一句话说的很好,**面试的本质不是一问一答,而是亮点展示(放大招)。**所以要学会掌握面试的主动权,把话题尽量往自己擅长的地方引,当然陈述的时候记得一定要简洁扼要。

笔者当时在准备阿里面试的时候,就花了很多精力把 GitHub 一个优秀的开源框架,从设计模式、原理以及细节都琢磨了个透。

4. 算法题 — 知之为知之,不知为不知

面试中问到算法题,如果不知道就明确表示不知道,切记不要装做知道,然后不知所云的说了一大推,这样反而会给面试官留下比较差的印象,面试评价上也会比较难看,很有可能也会影响你后续的面试。

不用担心回答不知道,就感觉没戏了。这里一般有两种情况:一种确实是对算法要求高的职位,那没办法了,只能回去好好加强一下,来日再战。还有一种情况主要是考察你的综合能力,你其他方面的能力表现的非常好,可以弥补。不会有影响的。嗯,笔者当时就属于第二种(强行炫耀)。

算法真的是笔者的一大弱项,之前每次面试被问到算法题的时候,我都很头疼,不过后来索性想明白了,把更多时间放在自己所擅长的地方了。

5. GitHub — “不只是全球最大的同性交友网站“

因为 GitHub 上的开源项目,笔者多次收到过 Facebook、Twitter、英伟达 (NVDIA) 的面试邀约邮件,尽管只是一封邮件,但是对于笔者来说,自身的能力得到认可还是很开心的。

所以,如果你的 GitHub 主页足够漂亮,带来的价值远超出你的想象,尤其是对于一无学历,二无大厂背景的同学来说,就显得更重要了,一定要利用好这个平台去展示自己的能力。

6. 还有一些小细节
  • 简历遵循 STAR 法则,内容才是王道。对于某些大厂来说,都会有自己的招聘系统,而你精心打造的酷炫简历在导入到后台后,会变得面目全非。你的简历样式做的再好看也没用,少在样式上下功夫,多在内容上下功夫。

  • 听到面试官的问题后,先不要急于回答,给自己几秒的思考时间,多站在面试官的角度去思考这个问题应该怎么答,比如当问到你觉得你最大的优势是什么?有些同学会直接回答热爱技术……然后…然后就没有了。这样显然毫无说服力,如果加上一句,经常浏览国外优秀的技术博客、在 GitHub 参与和贡献自己的开源力量,是不是就好很多了。

  • **面试结束后,不要觉得不好意思,或者觉得没有必要,对面试官说一声:“谢谢,辛苦您了”。**就我个人经验来说,毕竟大部分负责的面试官都会和你聊比较长的时间,也会尽可能挖掘你的技术亮点。结尾给面试官留个好印象,如果没有通过,至少对你的面试评价上也不会太难看。

最后

Android学习是一条漫长的道路,我们要学习的东西不仅仅只有表面的 技术,还要深入底层,弄明白下面的 原理,只有这样,我们才能够提高自己的竞争力,在当今这个竞争激烈的世界里立足。

人生不可能一帆风顺,有高峰自然有低谷,要相信,那些打不倒我们的,终将使我们更强大,要做自己的摆渡人。

我把自己这段时间整理的Android最重要最热门的学习方向资料放在了我的GitHub,里面还有不同方向的自学编程路线、面试题集合/面经、及系列技术文章等。

资源持续更新中,欢迎大家一起学习和探讨。

这篇关于中高级工程师Android开发!你的技术真的到天花板了吗?高级面试题+解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710802

相关文章

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表