Hawstein's Blog

Make something people love

Cracking the coding interview--Q18.1

题目 原文: What’s the difference between a thread and a process? 译文: 线程和进程的区别是什么? 解答 这是一道出现频率极高的面试题,考察基本概念。 进程可以认为是程序执行时的一个实例。进程是系统进行资源分配的独立实体, 且每个进程拥有独立的地址空间。一个进程无法直接访问另一个进程的变量和数据结构, 如果希望让一个进程访...

Cracking the coding interview--Q15.5

题目 原文: Imagine a simple database storing information for students’ grades. Design what this database might look like, and provide a SQL query to return a list of the honor roll students (top 10...

Cracking the coding interview--Q15.4

题目 原文: Draw an entity-relationship diagram for a database with companies, people, and professionals (people who work for companies). 译文: 画出一个数据库的实体关系图(ER图),其中的实体有公司(companies),人(people), 专业人士(...

Cracking the coding interview--Q15.3

题目 原文: What is denormalization? Explain the pros and cons. 译文: 什么是反范式?它优缺点是什么? 解答 反范式是通过增加冗余数据或数据分组来提高数据库读性能的过程。在某些情况下, 反范式有助于掩盖关系型数据库软件的低效。关系型的范式数据库即使做过优化, 也常常会带来沉重的访问负载。 数据库的范式设计会存储不同但相关的信...

Cracking the coding interview--Q15.2

题目 原文: What are the different types of joins? Please explain how they differ and why certain types are better in certain situations. 译文: SQL的连接有哪些不同的类型?解释它们的不同点及在什么情况下用哪种连接,为什么? 解答 连接(JOIN)将...

Cracking the coding interview--Q15.1

题目 原文: Write a method to find the number of employees in each department. 译文: 写一条SQL语句找到每一个部门中员工的数量。 解答 这个问题可以先将部门表和员工表做连接,然后再统计每个部门中的员工数量。 这里使用左连接,因为对于0个员工的部门,我们也要包含进来。 1 2 3 4 5 select Dep...

Cracking the coding interview--Q13.9

题目 原文: Write a smart pointer (smart_ptr) class. 译文: 写一个智能指针类(smart_ptr)。 解答 比起一般指针,智能指针会自动地管理内存(释放不需要的内存),而不需要程序员去操心。 它能避免迷途指针(dangling pointers),内存泄漏(memory leaks), 分配失败等情况的发生。智能指针需要为所有实例维护一...

Cracking the coding interview--Q13.8

题目 原文: Write a method that takes a pointer to a Node structure as a parameter and returns a complete copy of the passed-in data structure. The Node structure contains two pointers to other Node...

Cracking the coding interview--Q13.7

题目 原文: Why does a destructor in base class need to be declared virtual? 译文: 为什么基类中的析构函数要声明为虚析构函数? 解答 用对象指针来调用一个函数,有以下两种情况: 如果是虚函数,会调用派生类中的版本。 如果是非虚函数,会调用指针所指类型的实现版本。 析...

Cracking the coding interview--Q13.6

题目 原文: What is name hiding in C++? 译文 C++中名字隐藏是什么? 解答 让我们通过一个例子来讲解C++中的名字隐藏。在C++中,如果一个类里有一个重载的方法, 你用另一个类去继承它并重写(覆盖)那个方法。你必须重写所有的重载方法, 否则未被重写的方法会因为名字相同而被隐藏,从而使它在派生类中不可见。 请看例子: 1 2 3 4 5 6 7 ...