随笔分类 - 面试试题
经典的面试试题
摘要:什么是数据序列化? 数据序列化是指将结构化数据转换成允许以共享或存储的格式,并能恢复成原始结构。 在某些情况下,数据序列化的第二个目的是减少数据大小,从而减小对磁盘和带宽的要求。 Flat vs. Nested data 在开始序列化数据之前,确定或决定在数据序列化期间如何结构化数据(扁平或嵌套)是
阅读全文
摘要:栈 下压栈(或简称栈)是一种基于后进后出的(LIFO)策咯的集合类型. 其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。栈的例子很常见,想象桌上有一堆书., 只有顶部的那本书封面可见,要看到其他书的封面,只有先移除他们上面的书. 栈的抽象数据类型 一个栈一般会实现
阅读全文
摘要:1: 介绍 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本,该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够
阅读全文
摘要:1:概括 2、为什么UDP有时比TCP更有优势? UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。 (1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。 (2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了
阅读全文
摘要:1.闭包的理解 我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。 2. 闭包的格式 下面用伪代码进行闭包格式的描述 外层函数中的参数,不一定要有,据情况而定,但是一般情况下都会有并在内函数中使用到 案例 结果得到
阅读全文
摘要:快速排序的介绍 快速排序(quick sort)的采用了分治的策略。 分治策略指的是: 将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。 快排的基本思想是: 在序列中找一个划分值,通过一趟排序将未排序的序列排序成 独立的两个部分,其中
阅读全文
摘要:什么是插入排序 插入排序(Insertion Sort)是一种简单直观的排序算法。 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序在实现上,在从后向前的扫描过程中,需要把已排序元素逐步向后挪位,为最新元素提供插入空间。 即: 先将前两个排序 再将前三个排
阅读全文
摘要:在这些时候,我可以附和着笑,项目经理是决不责备的。而且项目经理见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向新人说话。有一回对我说道,“你学过数据结构吗?”我略略点一点头。他说,“学过数据结构,……我便考你一考。斐波那契数列用Python怎样写的?”我想,讨饭一样的人,
阅读全文
摘要:经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 |
阅读全文
摘要:先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 一、垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值。对Python语言来讲,对象的类型和内存都是在运行时确定的。这也是为什么我们称Python语言为动态类型的原因(这里我们把动
阅读全文
摘要:语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。这里以Python语言为例子,说明一门动态类型的、面向对象的语言的内存管理方式。 对象的内存使用 赋值语句是语言最常见的功能了。但即使是最简单的赋值语句,也可以
阅读全文
摘要:什么是HTTP协议 HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和 Web服务器之间的数据交换。我们在使用IE或Firefo
阅读全文
摘要:数据(Data)是信息的载体,也就是说数据里面隐含着信息; 它能够被计算机识别、存储和加工处理。它是计算机程序加工的“原料”。随着计算机软件、硬件的发展,以及计算机应用领域的扩大,数据的含义也随之拓广了,它不仅仅是数字和字符串,而图形、图像、声音等,它们也属于数据的范畴。 数据元素(Data Ele
阅读全文
摘要:说到面向对象,大家第一反应应该就是它的三大特性:封装性、继承性和多态性。那么我们先简单的了解一下这三大特性: (1)封装性:封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 在C++中类中成员的属性有:public, protect
阅读全文
摘要:1. 递归概述 递归( recursion)是一种编程技巧,某些情况下,甚至是无可替代的技巧。 递归可以大幅简化代码,看起来非常简洁,但递归设计却非常抽象,不容易掌握。通常,我们都是自上而下的思考问题, 递归则是自下而上的解决问题——这就是递归看起来不够直观的原因。那么,究竟什么是递归呢?让我们先从
阅读全文
摘要:Python & BinaryTree 1. BinaryTree (二叉树) 二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,
阅读全文
摘要:题目一 竹筒有20根签,10根白色,10根红色。抽取10根颜色一致可获得100元奖励,抽取9根颜色一致可获得50元奖励,但是抽取红色5根白色5根就损失50元,问这游戏是否值得参与?原因? 解: 这是典型的组合数求期望问题。设事件‘抽取10根颜色一致’为A,事件‘抽取9根颜色一致’为B,事件‘抽取红色
阅读全文