元数据

剑指Offer

  •  剑指Offer|200
  • 书名: 剑指Offer
  • 作者: 何海涛著
  • 简介: 本书剖析了50个典型的程序员面试题。全书分为7章,主要包括面试的流程,讨论面试流程中每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结了程序员面试的知识点;高质量的代码,讨论影响代码质量的的3个要素;解决面试题的思路,总结在编程面试中解决难题的常用思路;面试中的各种能力,本章总结应聘者在面试过程中如何表现学习能力和沟通能力;两个面试案例,这两个案例总结了应聘者在面试过程中哪些举动是不好的行为,而哪些表现又是面试官所期待的行为。
  • 出版时间 2012-01-01 00:00:00
  • ISBN: 9787121148750
  • 分类: 计算机-编程设计
  • 出版社: 电子工业出版社
  • PC地址:https://weread.qq.com/web/reader/1f132a805a61751f1674656

高亮划线

1.3.2 技术面试环节

  • 📌 在参加面试之前,应聘者需要熟练掌握链表、树、栈、队列和哈希表等数据结构,以及它们的操作。

    • ⏱ 2024-02-22 12:00:02
  • 📌 重点掌握二分查找、归并排序和快速排序

    • ⏱ 2024-02-22 12:00:22
  • 📌 除了完成基本功能之外,还要考虑到边界条件、错误处理等各个方面。

    • ⏱ 2024-02-22 13:10:44
  • 📌 面试官除了希望应聘者的代码能够完成基本的功能之外,还会关注应聘者是否考虑了边界条件、特殊输入(比如 NULL 指针,空字符串等)及错误处理。

    • ⏱ 2024-02-22 13:11:48
  • 📌 如果在面试的时候遇到难题,我们有 3 种办法分析、解决复杂的问题:画图能使抽象问题形象化,举例使抽象问题具体化,分解使复杂问题简单化。

    • ⏱ 2024-02-22 18:26:06

2.2.2 C#

  • 📌 我们在 C#中可以为类型定义一个 Finalizer 和 Dispose 方法以释放资源

    • ⏱ 2024-02-25 22:26:41
  • 📌 C#的Finalizer是在运行时(CLR)做垃圾回收时才会被调用,它的调用时机是由运行时决定的,因此对程序员来说是不确定的

    • ⏱ 2024-02-25 22:26:50

面试题2:实现Singleton模式

  • 📌 利用静态构造函数

    • ⏱ 2024-02-27 10:35:50
  • 📌 实现按需创建实例

    • ⏱ 2024-02-27 10:35:53

2.3 数据结构

  • 📌 数组和字符串是两种最基本的数据结构,它们用连续内存分别存储数字和字符。链表和树是面试中出现频率最高的数据结构 ^680309-22-934-988
    • ⏱ 2024-02-27 10:37:49

2.3.2 字符串

  • 📌 现出了函数之后 text 变成”world”的效果,我们必须把参数text标记ref或者out。 ^680309-25-3705-3753
    • ⏱ 2024-02-27 11:56:26

面试题4:替换空格

  • 📌 先遍历一次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串的总长度。每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上 2 乘以空格数目。 ^680309-26-2237-2329
    • ⏱ 2024-02-27 11:57:17

面试题5:从尾到头打印链表

  • 📌 遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头。也就是说第一个遍历到的结点最后一个输出,而最后一个遍历到的结点第一个输出。这就是典型的“后进先出”,我们可以用栈实现这种顺序

    • ⏱ 2024-02-27 16:41:11
  • 📌 递归在本质上就是一个栈结构

    • ⏱ 2024-02-27 16:43:14
  • 📌 当链表非常长的时候,就会导致函数调用的层级很深,从而有可能导致函数调用栈溢出。显式用栈基于循环实现的代码的鲁棒性要好一些。

    • ⏱ 2024-02-27 16:43:20

3.3 代码的完整性

  • 📌 首先要考虑的是普通功能测试的测试用例。

    • ⏱ 2024-02-28 09:34:09
  • 📌 其次需要考虑各种边界值的测试用例。

    • ⏱ 2024-02-28 09:34:04
  • 📌 最后还需要考虑各种可能的错误的输入,也就是通常所说的负面测试的测试用例。

    • ⏱ 2024-02-28 09:36:23
  • 📌 第一种方式是函数用返回值来告知调用者是否出错。

    • ⏱ 2024-02-28 09:36:37
  • 📌 第二种方式是当发生错误时设置一个全局变量。

    • ⏱ 2024-02-28 09:36:43
  • 📌 第三种方式是异常。

    • ⏱ 2024-02-28 09:36:47

面试题11:数值的整数次方

  • 📌 由于计算机表示小数(包括float和double型小数)都有误差,我们不能直接用等号(==)判断两个小数是否相等。如果两个小数的差的绝对值很小,比如小于0.0000001,就可以认为它们相等。 ^680309-44-3386-3482
    • ⏱ 2024-02-28 09:39:26

面试题26:复杂链表的复制

  • 📌 如果在原始链表中结点N的 m_pSibling指向结点S,那么在复制链表中,对应的N’应该指向S’。由于有了哈希表,我们可以用O(1)的时间根据S找到S’。 ^680309-64-1882-1960
    • ⏱ 2024-02-28 11:06:10

读书笔记

本书评论