stormzhang / android-interview-questions-cn
- суббота, 22 июля 2017 г. в 03:13:16
最全面的高质量 Android 面试指南。
受 android-interview-questions 项目启发,这里想发挥众多 Android 中国开发者的力量,整理一份高质量、范围全的 Android 面试指南,旨在帮助更多的 Android 开发者提升技术,找到工作。
现在还是项目初期,项目背景见这里:想跟大家一起做件小事,也欢迎关注微信公众号 stormzhang,后续有任何进展我都会在公号进行通知的。
目前该项目有如下初步的计划:
翻译 android-interview-questions 项目,不过翻译仅是我们的第一步而已,这个比较简单,目前第一步翻译工作已经被认领完毕;
因为原项目很多只是列了一些问题,但是都没有答案的,所以第二步我们就是认领问题,整理答案,务必保证高质量、易理解,因为问题很多,所以这一步需要花费不少精力,也需要更多的同学参与进来,目前还在第一步阶段;
第三步是补充与完善,原项目虽然列了不少领域,但是总归有些遗漏的,比如 Android 安全、插件化、Kotlin 等等,第三步是找在某一领域研究比较深的同学加入进来,对一些领域进行补充、完善,甚至会推出一些专题等;
关于数据结构与算法,问题的难度完全取决于你所申请的公司
链表看起来更像树,而不是数组,它使用一组结点来表示一个序列。每一个结点都包含数据和一个指针。在链表中,结点中的数据可以为任意类型,而指针则是指向下一结点的引用。链表包含一个头结点和一个尾结点。头结点是链表中的第一个结点,尾结点是最后一个结点。链表不是一个循环数据结构,所以尾结点没有指向头结点的指针,指针为空。一些基础方法的时间复杂度如下:
算法 | 平均 | 最差 |
---|---|---|
空间 (Space) | O(n) | O(n) |
查找 (Search) | O(n) | O(n) |
插入 (Insert) | O(1) | O(1) |
删除 (Delete) | O(1) | O(1) |
栈是一个有着“后进先出”特性的基础数据结构,这就意味着最后一个入栈的元素,也是第一个出栈的。栈就像是一堆书,想要得到书堆中的第一本书(最下面一本),必须把其他的书都先拿走。向栈中添加一个元素的操作被称为 Push(入栈),删除一个元素的操作被称为 Pop(出栈),查看且不删除最后一个入栈的元素的操作被称为 Top 。实现栈的常用方法是使用链表(LinkedList),也可以使用不允许空值的 StackArray(使用数组实现),还有允许空值的 Vector
算法 | 平均 | 最差 | 图形表示 |
---|---|---|---|
空间 (Space) | O(n) | O(n) | |
查找 (Search) | O(n) | O(n) | |
入栈 (Push) | O(1) | O(1) | |
出栈 (Pop) | O(1) | O(1) | |
查看栈顶 (Top) | O(1) | O(1) |
感谢这些无私的贡献者,排名不分先后。
Copyright (C) 2017 stormzhang
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.