深度学习面试题集锦【2】

算法与数据结构

  1. 二叉树
  • 二叉搜索树如何删除某个节点,先说思路后写代码 (今日头条)。
  • 二叉树之字形层次遍历,(正反正反)。
  1. 链表
  • 一个链表,如何依次输出第一个,倒数第一个,第二个,倒数第二个(今日头条)。
  • 原址:变换为奇数在前 偶数在后,相对顺序不变。
  • 链表求和。
  1. 查找
  • 给一个 float 数,如何求算术平方根.(今日头条)
  1. 哈希
  • 要实现一个哈希表应该怎么做(根据要哈希的内容选择合适的哈希函数和冲突解决方案)。
  1. 排序
  • 一个 0-1 矩阵,每一排都是 0 在前 1 在后,问哪一排的 1 最多?(二分法)问有没有更简单的方法(每一排记录当前的最左边的 1 的位置,下一排的时候直接忽略右边的)问时间复杂度,猜测是 O(m+n)。
  1. 搜索
  • 描述迪杰斯特拉算法。
  • 描述 dfs 和 bfs, 分别怎么实现?(栈和队列)。
  1. 动态规划
  • 动态规划是什么, 动态规划和带记忆的递归有什么区别?(自顶而下和自底而上)
  • 0-1 背包问题的动态规划递归式怎么写?
  • 三角数堆,只能往左下或者右下走,从堆顶到堆底和最小是多少。(dp)
  1. 其它
  • 若干个长度不同的数组,求最小区间,让每个数组都有数字在这个区间内?
  • 三种砖块,分别是 11,12,13,拼成 1N,有多少种拼法?时间复杂度多少?(今日头条)
  • 斐波那契数列。
  • 描述 KMP 算法。
  • 写代码:两个有序数组的合并。

编程语言相关问题

  1. Python
  • 一个 python 的 dict,按照 key-value 存储,如何按照 value 排序。
  • static 的类有什么用。
  • 如何实现一个只能实例化一次的类。
  • 模板类是什么?
  • 纯虚函数和虚函数的区别是什么?
  1. C++
  • 一个 dict,如果是 C++怎么做?一个 map,怎么按照 value 排序?

看了这么多题目,哪些会做哪些不会也就有一个明晰的了解。那么如何为年后的春招做准备呢?2018 年中山大学郑永川构建了一个准备秋招/春招的学习笔记:CS-Notes。该项目包含了计算机科学的大量精要知识与教程,目前该项目已经有超过 45K 的收藏量。

CS-Notes 项目从基础排序算法到编程理念展示了计算机科学的应知应会,该项目对机器学习开发者及入门读者也非常有用,例如 Linux 系统、面向对象的编程、Git 工具和代码可读性等。这些笔记都是作者根据对各类书籍的理解,并记录重要知识点而完成。

项目地址:https://github.com/CyC2018/CS-Notes

该项目的主体内容可分为 9 部分,其中算法介绍了基础的栈和队列、并查集、排序和查找等,操作系统介绍了现代计算机系统与 Linux 系统。其它如介绍了设计模式和基本思想的面向对象编程、世界上最先进的分布式版本控制系统 Git、以及 Java 和编程实践等都有涉及。

算法

  • 剑指 Offer 题解(目录根据原书第二版进行编排)
  • Leetcode 题解(做了一个大致分类,并对每种分类题型的解题思路做了总结)
  • 算法(排序、并查集、栈和队列、红黑树、散列表)

操作系统

  • 计算机操作系统(进程管理、内存管理、设备管理、链接)
  • Linux(基本实现原理以及基本操作)

网络

  • 计算机网络(物理层、链路层、网络层、运输层、应用层)
  • HTTP(方法、状态码、Cookie、缓存、连接管理、HTTPs、HTTP 2.0)
  • Socket(I/O 模型、I/O 多路复用)

面向对象

  • 设计模式(实现了 Gof 的 23 种设计模式)
  • 面向对象思想(三大原则(继承、封装、多态)、类图、设计原则)

数据库

  • 数据库系统原理(事务、锁、隔离级别、MVCC、间隙锁、范式)
  • SQL(SQL 基本语法)
  • Leetcode-Database 题解(Leetcode 上数据库题目的解题记录)
  • MySQL(存储引擎、索引、查询优化、切分、复制)
  • Redis(五种数据类型、字典和跳跃表数据结构、使用场景、和 Memcache 的比较、淘汰策略、持久化、文件事件的 Reactor 模式、复制)

Java

  • Java 基础(不会涉及很多基本语法介绍,主要是一些实现原理以及关键特性)
  • Java 容器(包含容器源码的分析)
  • Java 虚拟机(运行时数据区域、垃圾收集、类加载)
  • Java 并发(线程使用方式、两种互斥同步方法、线程协作、JUC、线程安全、内存模型、锁优化)
  • Java I/O(NIO 的原理以及实例)

系统设计

  • 系统设计基础(性能、伸缩性、扩展性、可用性、安全性)
  • 分布式(分布式锁、分布式事务、CAP、BASE、Paxos、Raft)
  • 集群(负载均衡、Session 管理)
  • 攻击技术(XSS、CSRF、SQL 注入、DDoS)
  • 缓存(缓存特征、缓存位置、缓存问题、数据分布、一致性哈希、LRU、CDN)
  • 消息队列(消息处理模型、使用场景、可靠性)
  • 分布式问题分析(分布式事务、分布式锁、分布式 Session、负载均衡)

工具

  • Git(一些 Git 的使用和概念)
  • Docker(Docker 基本原理)
  • 构建工具(构建工具的基本概念、主流构建工具介绍)
  • 正则表达式(参考 正则表达式必知必会)

编码实践

  • 代码可读性(参考 编写可读代码的艺术)
  • 代码风格规范(Google 开源项目的代码风格规范)
  • 代码风格规范(Google 开源项目的代码风格规范)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值