【算法】刷题范围建议 和 代码规范
文章目录
一、刷题范围建议
面试算法 侧重实践 , 工程 ; 并不是所有的算法都适合面试 , 靠背诵解决问题的算法 , 只能解决单个问题没有推广性的算法 , 有简称 , 带人名的算法 , 这些算法与编程能力关系不大 , 基本面试中不会出现 ; 算法工程师岗位除外 ;
刷题关注点 : 不要乱刷题 , 刷题范围如下 ;
① 算法: 字符串处理 , 排序算法 ( 快速排序 , 归并排序 ) , 双指针算法 , 二分法 , 分治法 , 宽度优先搜索 , 深度优先搜索 , 二叉树遍历 , 动态规划 , 拓扑排序 , 递归 ;
② 数据结构 : 数组 , 链表 , 二叉树 , 堆 , 哈希表 , 线段树 , 树状数组 , 跳跃表 , 红黑树 , 字典树 , 并查集 ; 不同的数据结构 , 增删查改的算法复杂度是不同的 ; 每种数据结构都有其擅长处理的问题 , 如 : 数组方便查询 , 链表方便增删 ;
一些大部头的书 , 如 : 算法导论 , 尽量避免陷进去 , 搞算法研究 , 或算法工程师才去看这些书 , 面试看这些就废了 ;
二、代码规范
代码缩进 : 缩进一般 不要超过 3 层 , 缩进量层次越深 , 出 BUG 几率越高 ; 超过 3 层的逻辑放在子函数中完成 ;
算法耦合性 : 一个算法如果需要 多个步骤 进行 , 每个步骤之间有交叉重复的情况 , 尽量 将每个步骤抽出放在一个单独的函数中完成 ;
代码注释问题 : 推荐使用 变量 / 方法 清晰易懂的命名 , 逻辑简单易懂 ; 需要一定的编程功底 , 感觉纯属扯淡 , 注释能加还是多加 ;
多拆分代码 : 代码 适当地拆分成子函数 , 拆分的越细 , 子函数越多 , 代码越长 , 但是 代码可读性增强 , 更易于维护 , 出错较少 ;
变量 / 方法名称 :
- 变量 / 方法 命令 , 都要有实际的意义 , 不允许出现无意义名称 ;
- 使用 1 ~ 2 个单词作为名称 ;
多重判定 : 多使用 continue 关键字 , 少用 if 关键字 ;
使用空格 :
- 二元运算符两边 都要添加空格 ;
- 单元运算符不加空格 ;
- if 与括号之间 加空格 ;
- if , for 括号与花括号之间 添加空格 ;
- 逗号后面 添加空格 ;
使用空行 : 一个方法中 , 使用空行分隔不同逻辑模块 ;
异常检测 :
- 所有的函数 , 进来第一件事就是 验证参数是否符合要求 ;
- 只要涉及到函数 , 都要 确保下标不越界 ;
- 访问对象 , 确保对象不为空 , 避免空指针异常 ;
- 避免使用全局变量 ;
算法面试 :
- 如果拿到算法题目没有头绪 , 可以找面试官要提示 , 或者算法逻辑 , 但是问的问题不要太小白 ;
- 如果太难 , 给出思路 , 完成部分模块即可 ;
相关文章
- 【NLP基础】英文关键词抽取RAKE算法
- c语言 银行家算法(完整代码实现)
- 最短路径dijkstra算法精品代码(超详解)
- 【说站】python选择排序算法的性能分析
- 【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
- 浅谈时间轮算法[通俗易懂]
- 文档分割的shingling算法
- Go 数据结构和算法篇(十四):哈希表、哈希函数、哈希冲突和哈希算法
- 有限数据下强化学习算法超越人类,清华叉院助理教授解读EfficientZero
- 数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病|附代码数据
- 地下环境 | 九种3D Lidar-SLAM算法评估
- 问题 1503: [蓝桥杯][算法提高VIP]前10名《冒泡排序》
- Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型|附代码数据
- redis 数据删除策略和逐出算法的问题小结
- python AES算法模块进行加密解密的代码片段详解编程语言
- 约瑟夫环算法Java实现代码详解编程语言
- 半监督组稀疏表示:模型、算法与应用(ECAI 2016论文精选)| AI科技评论
- soLinux排序算法KSO:一种高效的排序方式(linuxsortk)
- 开启漏桶算法,提高Redis性能(漏桶算法 redis)
- 如何实现Oracle任务调度算法(oracle任务调度算法)
- 弘犀CRO黄又钢:小微贷款风控模型中的算法探索|CCF-GAIR 2020
- php3行代码的分页算法(求起始页和结束页)
- php数字转汉字代码(算法)
- 解析C#彩色图像灰度化算法的实现代码详解
- 哈夫曼算法构造代码