回到首页

输入关键词,多个关键词用空格分隔。

#解题思路

该标签下的全部文章。

网络

计算机网络是计算机科学的一个重要组成部分。特别是在当前互联网,移动互联网的浪潮之下,几乎所有的服务都需要通过网络实现,并且后台的分布式数据库也通过网络进行互联。

测试

在面试软件开发的过程中,面试官可能也会询问关于软件开发流程以及测试方法相关的问题。在大多数互联网公司,许多部门不一定配有专门的QA(Quality Assurance),在这种情况下,程序员本身需要对自己开发的模块和系统

面向对象设计

对于初级程序员的面试,最难的部分可能就是所谓的设计题。设计题可以分成两个类别:系统架构设计和利用面向对象编程原理进行程序设计。前者所涉及的技术往往包括数据库,并发处理和分布式系统等等,对于经验要求和知识要求比较高。

位操作

对于网络、操作系统、嵌入式系统等职位的面试,位运算也是常见的题目类型之一。所谓的位运算,是指按二进制进行的运算。常见运算包括求反,与运算,或运算,异或运算及位移。关于位运算的真值表,请参考“工具箱”给出的链接。

排序和搜索

冒泡排序的原理非常简单,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

树和图

对于树和图的性质,一般全局解依赖于局部解。通常可以用DFS来判断子问题的解,然后综合得到当前的全局结论。

递归和动态规划

递归和动态编程(Dynamic Programming, DP)是算法类问题中的难点所在。算法的核心在于找到状态转移方程,即如何通过子问题解决原问题。在“The Rules”部分,我们先介绍递规和DP的普适特性;

链表

链表(linked list)是一种常见的线性数据结构。对于单向链表(singly linked list),每个节点有一个next指针指向后一个节点,还有一个成员变量用以存储数值;

数组和字符串

在C/C++中,标准的数组可以通过在栈(Stack)上分配空间,或者通过先声明指针,然后用new关键字(或者C中的malloc函数),在堆(Heap)上动态的分配空间。举例如下: