[玩转算法面试]什么是算法面试?
来源:互联网 发布:mac配置sublime text3 编辑:程序博客网 时间:2024/05/18 00:05
算法面试
什么是算法面试?
·不代表能够“正确回答”每个算法问题,合理的思考方向更重要,是正确完成算法面试的前提;
·算法面试优秀不意味着技术面试优秀;
·技术面试的游戏不意味着能够拿到offer
对一组数据进行排序
·这组数据有什么样的特征?
·有没有可能包含大量重复的元素?
如果有这种可能的话,三路排序法是更好的选择
如果可以肯定数组中每个元素都是独特的,那么普通的快速排序法是最佳的。
·是否大部分数据距离它正确的位置很近?是否近乎有序?
如果是这种可能的话,插入排序是更好的选择
·是否数据的取值范围非常有限?比如说对学生的成绩排序。
如果是这种可能的话,计数排序是更好的选择
·对排序有什么额外的要求?
是否需要稳定排序?
如果是的话,归并排序是更好的选择
·数据具体的存储状况是怎么样的?
快速排序非常依赖数组的随机存储
若使用链表进行排序,归并排序是更好的选择
·数据的大小是否可以装载在内存里?
数据量很大,或者内存很小,不足以装载再内存里,需要使用外排序算法。
面试问题:
·项目经历和项目中遇到的实际问题
·你遇到的印象最深的bug是什么?
·面向对象
·设计模式
·网络相关、安全相关、内存相关、并发相关……
·系统设计;scalability
通过过去了解思考行为方式
·遇到的最大的挑战?
·犯过的错误?
·遭遇的失败?
·最享受的工作内容?
·遇到冲突的处理方式?
·做的最与众不同的事儿?
准备好合适的问题问面试官
·整个小组的大概运行模式是怎样的?
·整个项目的后续/中长期规划是如何的?
·这个产品中的某个问题是如何解决的?
·为什么选择某些技术?标准?
·我对某个技术很感兴趣,在你的小组中我会有怎样的机会深入这种技术?
高级数据结构和算法面试提及概率很低:
·红黑树
·B-Tree
·斐波那契堆
·计算几何
·数论
·FFT
基础算法和数据结构
·各种排序算法
·基础数据结构和算法的实现:如堆、二叉树、图……
·基础数据结构的使用:如链表、栈、队列、哈希表、图、Trie、并查集
·基础算法:深度优先、广度优先、二分查找、递归……
·基本算法思想:递归、分治、回溯搜索、贪心、动态规划……
选择合适的OJ(在线判题系统)
·LeetCode真实的面试问题 www.leetcode.com
·HackerRank对问题的分类很详细www.hackerrank.com
注意题目中的条件
·给定一个有序数组……
·有一些题目中的条件本质是暗示:
·设计一个O(nlogn)的算法——分治法(搜索树)、是否是考虑先排序,再找
O(n)或者O(logn)的算法
·无需考虑额外的空间——考虑是否开辟额外空间,以空间换时间的方法
·数据规模大概是10000——设计O(n^2)的算法
……
当没有思路的时候
·用几个简单的测试用例、体验一下
·不要忽视暴力解法。暴力解法通常是思考的起点
优化算法
·遍历常见的算法思路
·遍历常见的数据结构
·空间和事件的交换(哈希表)
·预处理信息(排序)
·在瓶颈处寻找答案:O(nlogn)+O(n^2); O(n^3)
实际编写问题
·极端条件的判断
-数组为空?字符串为空?数量为0?指针为NULL?
·变量名
·模块化、复用性
- [玩转算法面试]什么是算法面试?
- 玩转算法面试-面试分析
- 玩转算法面试-数组
- 玩转算法面试-查找
- 玩转算法面试-时间复杂度分析
- 玩转算法面试-数据规模,时间复杂度,均摊复杂度
- 转:面试算法题
- [转]面试算法小记
- [转]面试算法小记
- [转]面试算法小记
- 面试算法小结-转
- 算法面试
- 面试算法
- 算法面试
- 算法面试
- 面试算法
- 面试 算法
- 面试算法
- Oracle中查询某字段不为空或者为空的SQL语句怎么写
- MapReduce 模式、算法和用例
- github上的几个机器学习程序
- Java版简易画图板的实现
- Mybatis入门基础--查询与缓存
- [玩转算法面试]什么是算法面试?
- XHR的常用属性 和 方法
- 欢迎使用CSDN-markdown编辑器
- poj3468 A Simple Problem with Integers(线段树)
- atitit 用什么样的维度看问题.docx 如何了解 看待xxx
- 分析Android中Handle机制
- 计算机领域资讯(二)
- 进程与线程简单概述
- mysql 总结