Android开发Android进阶之路Android开发经验谈

Android面试备忘录(数据结构和算法+核心Android)

2019-08-14  本文已影响2人  2c3d4f7ba0d4

数据结构和算法

关于数据结构和算法主题的问题水平完全取决于你应聘的公司水平。

Bubble sort
Bubble sort 是最简单的排序算法之一。它只是比较相邻元素,如果相邻元素之前的元素较小 - 它会改变它们的位置。因此,在数据列表上的一次迭代中,保证至少一个元素将处于其正确的位置(最大/最小的一个 - 取决于排序的方向)。这不是一个非常有效的算法,因为高度无序的数组将需要大量的重新排序(高达O(n ^ 2)),但该算法的一个优点是它的空间复杂性 - 只有两个元素同时进行比较没有必要分配更多的内存,而不是那两个占用。


Selection sort
首先,选择排序假定要排序的数组的第一个元素是最小的,但为了确认这一点,它迭代所有其他元素进行检查,如果找到一个,则将其定义为最小的元素。当数据结束时,当前发现最小的元素放在数组的开头。这种排序算法非常简单,但在较大的数据集上效率仍然不高,因为只需将一个元素分配给它的位置,它就需要遍历所有数据。

Insertion sort
插入排序是算法的另一个例子,它并不难实现,但效率也不高。为了完成它的工作,它“增长”数据的排序部分,通过将新遇到的元素“插入”数组的已经(内部)排序部分,该部分由先前遇到的元素组成。这意味着在最好的情况下(数据已经排序),它可以确认其作业是在Ω(n)操作中完成的,而如果所有遇到的元素都不符合O(n ^ 2)次操作所需的顺序可能需要。

Merge sort

这是一种“分而治之”的算法,意味着它递归地将给定数组“划分”为较小的部分(最多1个元素),然后对这些部分进行排序,将它们相互组合。这种方法允许合并排序实现非常高的速度,同时加倍所需的空间,当然,但今天的存储空间比几年前更容易获得,所以这种权衡被认为是可接受的。

Quicksort
Quicksort被认为是非常快的。如果实施得当,它可能比其主要竞争对手快很多倍。这个算法也是“分而治之”的家族,它的第一步是选择一个“枢轴”元素(从统计上随机选择,最小化获得最差性能的机会),然后通过比较元素到这个支点,移动它越来越接近它的'最终位置。在此过程中,较大的元素移动到它的右侧,较小的元素移动到左侧。完成此操作后,quicksort会对放置的pivot的每一侧的子数组重复此过程(首先递归执行),直到对数组进行排序。


当然,还有更多的排序算法及其修改。我们强烈建议所有读者熟悉其他几个,因为了解算法是候选人非常重要的素质,申请工作并且能够“了解”正在发生的事情。

Dijkstra算法
A *算法
广度优先搜索
深度优先搜索

核心Android

基础

活动

片段

视图和ViewGroups

显示内容列表

Dialogs and Toasts

Intents and Broadcasting

服务

进程间通信

长期运营

使用多媒体内容

数据保存

外观和感觉

内存优化

内存优化

电池寿命优化

支持不同的屏幕尺寸

权限

本地编程

Android系统内部

调试和编程工具

其他

总结

花了一些功夫编写这篇文章,谢谢大家有耐心看完,因为篇幅原因,没能全放上来,有需要的朋友可以

关注+加群:

Android进阶技术交流 (895077617 )免费获取整理版的资料

群里可以与大神一起交流并走出迷茫。新手可进群免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行!有想学习Android Java的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,ViewPager,Bitmap,组件化架构,四大组件等深入学习视频资料以及Android、Java全方面面试资料)

上一篇下一篇

猜你喜欢

热点阅读