这里简单说一下我的个人情况:
本人本硕985软件工程,17年毕业后在TP-Link做过接近一年的安卓开发,后来才辞职考研回母校继续提升自我。原本是打算找一份算法的实习,但今年算法岗的形势不容乐观,竞争激烈。所以在2月初决定把重心放在开发上,做自己喜欢的安卓,然后就开始投递简历了。
2月初的时候很多大厂都还没开始招聘暑假实习,我就在牛客网上找大厂的内推贴来看,当时字节跳动每天都有十几个内推贴,甚是疯狂!我就找了三四个字节的内推邮箱发去了自己的简历。大概2月7号发的简历,10号就收到了来自北京的HR约面试的电话,邮件中给的是牛客的视频面试链接。然后14号连着一面二面,完了直接电话约三面,16号三面完,当晚8点收到了HR的Offer Call。(三次技术面)
大概到了3月3号决定投一下base深圳的腾讯,4号官网投递了简历,然后约了9号一面,接着12号二面,当晚三面的面试官加了QQ,约了15号三面。接着17号HR面,最后19号晚上8点顺利收到HR的Offer Call。(三次技术面 + HR面)
还有一些问题遗忘了,最后是做一道编程题,二叉树查找相关的,用递归完成了。
还有一些非常难的Java方面的问题遗忘了,编程题考查二叉树Z字型遍历,不能用STL库。
这次面试没有编程题,很简短但是较为严肃,前两次气氛都较为轻松。
简单聊了一下以前的工作经历和学习经历,为什么辞职考研,对未来的职业规划,然后就介绍公司的待遇和福利等等,发了口头Offer,三天后邮件正式Offer。
这次面试非常注重过往项目的经验,还有些问题遗忘了,编程题两道:中序和后序推导出前序(二叉树递归完成)、给出一个链表删除倒数第五个节点
这次面试非常注重基础知识的考察,当然有很多问题遗忘了,编程题是:数组中每个值看作一栋楼的高度,站在数组中的一个位置求前后能看到的楼的数目(高楼挡在前面会看不到后面的楼)
这次面试从家庭背景学习情况问到过往项目,再问到基础知识,真的细致入微哈哈~当然还是有些问题遗忘了,中间还问了能过来实习的时间。最后编程题是:两个超大的字符串文件,求他们的最长回文子串,要求不能调用库(当时用动态规划完成,但是时间复杂度为N^2,其实用马拉车算法可以降低复杂度,但当时我并没有练过,所以就把代码交上去了)
无论是本科生还是研究生,实习生还是正式工作(社招除外),面试永远考察的都是基础!所以万变不离其中,好好复习计算机学科相关的基础知识,特别是常问的那一系列问题,每次面试完立刻复盘,查缺补漏。不要害怕失败,每次的失败都会换来一段成长,这是非常宝贵的~然后编程题,平时花些时间上牛客或者leetcode刷一下题就好了。
面试的时候,保持自信心,回答问题不要着急保证思路清晰。然后对每个问题都诚实回答,不会的不能装懂,可以谦虚请教面试官。最重要的是,坚定自己的目标,不要因为一两次的面试失利就影响到自己的情绪和状态,不断的总结失败的原因,总有一天会收到心仪公司的Offer。最后祝各位Offer收到手软!
接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用。
帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。
从架构基础开始,分了8个模块来逐步从基础进阶到架构师的环节:
多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。
面试前夕,刷题冲刺
面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。
关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。