标签:tree 特征 并发 nlogn 基本算法 二叉树 快速排序 数据结构和算法 查找
====什么是算法面试====
算法面试不是什么:
1. 不代表能够正确的回答每一个算法问题,但是合理的思考方向其实更重要,也是正确完成算法面试问题的前提。
2.算法面试优秀并不意味着技术面试优秀
3. 技术面试优秀不意味着能够拿到Offer.
====合理的思考路径=====
目的:给面试官展示出你的思考路径,将算法面试过程看作是和面试官一起探讨一个问题的解决方案,对于问题的细节和应用环境,可以和面试官沟通,这种沟通本身很重要,它暗示着你思考问题的方式。
例如:对数据进行排序
1. 快速排序算法:O(nlogn)
2. 这组数据有什么特征,是否包含了大量重复的元素,是否三路快排更快速。
比如,JAVA 背后就是三路快排。
3. 这组数据是否近乎有序的,是否距离它正确的位置很近,如果是的话,用插入排序法就很快。
4.如果数据是有区间的,计数排序就更好。比如高考成绩。
5. 快排依赖于数组的随机存储,如果现在是使用链表的话,归并排序会更快。
======
面向对象 设计模式 网络相关,安全相关,内存相关,并发相关,系统设计.
======
高级的算法提及会很低:红黑树 计算几何 B-Tree 数论 FFT 斐波那契数
======
不要轻视基础算法和数据结构: 各种排序算法,
基础数据结构和算法的实现:堆、二叉树、图
基础数据结构的使用:如链表、栈、队列、哈希表、图、Trie、并查集
基础算法:深度优先、广度优先、二分查找、递归
基本算法思想:递归、分治、回溯搜索、贪心、动态规划...
=====
1.注意题目中的条件
2.当没有思路的时候,自己给自己几个简答的测试用例,试验一下。
3.不要忽视暴力解法,暴力解法通常是思考的起点。
4.优化算法
1>遍历常见的算法思路,便利常见的数据结构
2> 空间与时间的交换,哈希表,预处理信息(排序)
===实际编写问题===
1.数组为空,字符串为空,数量为0,指针为NULL,要注重模块化,复用性。
标签:tree 特征 并发 nlogn 基本算法 二叉树 快速排序 数据结构和算法 查找
原文地址:https://www.cnblogs.com/dagailun/p/12368685.html