自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 创新工场实习面经

今天终于得到了创新工场实习的OFFER了,找实习的生活暂时告一段落,要做的工作也是我比较向往的方向,企业也符合自己的意愿,心情不错,分享下一面和二面的经验,以下是我每次面试完的总结:        刚刚面完创新工厂暑期实习的一面。把面试内容整理一下,自己做个总结,也为其他想去创新

2011-07-11 16:06:36 3057

原创 详解“十大排序技术”(一):插入排序与归并排序

作者:guiyinzhou时间:二零一零年六月十八日      排序技术一直以来是算法里面的一个核心部分,排序分为内部排序和外部排序,本文主要阐述内部排序十大关键技术。这些排序技术是学习时的重点,也是笔试和面试时常考的知识点,此篇博文是笔者学习时所整理的,由于能力有限,不足和错误之处望指正!话不多说,上算法,本文所给出的排序算法技术内容包括排序算法思想,示意图解析,C++源代码和算法复杂度

2011-06-18 11:34:00 1868

原创 2011百度暑期实习笔经&面经总结

从2011年5月7号到我的终面(三面)结束6月7号整整一个月,笔者对这次应聘多了一个总结,一来是对自己这段时间努力的一个交代,二来给其他想进入百度的人share一点经验,顺便攒攒人品,呵呵。2011.5.7百度暑期实习笔试题(核心研发方向【BJ】)笔试:一、简答(30分)1、extern “C”{}是什么含义?用来解决什么问题。(10分)2、至少说出两种经典设计模式,并举例说明使用场景,有

2011-06-11 10:53:00 3737

转载 C/C++查找一定范围内的素数(筛法)

<br />刚在网上找到了一篇讲述查找一定范围内素数的算法文章,觉得很不错,通俗易懂。<br />本文转自:http://dalu.blogbus.com/logs/37977984.html<br />      由于一个合数总是可以分解成若干个质数的乘积,那么如果把质数(最初只知道2是质数)的倍数都去掉,那么剩下的就是质数了。<br />例如要查找100以内的质数,首先2是质数,把2的倍数去掉;此时3没有被去掉,可认为是质数,所以把3的倍数去掉;再到5,再到7,7之后呢,因为8,9,10刚才都被去掉了,

2011-05-22 16:51:00 8224 1

转载 关于迭代器失效的一些认识

<br />      众所周之当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以便用重新获取新的有效的迭代器进行正确的操作:<br />iter=vec.insert(iter); iter=vec.erase(iter); <br />      想想究竟为什么迭代器实效,原因也不难理解。以vector为例,当我们插入一个元素时它的预分配空间不够时,它会重新申请一段新空间,将原空间上

2011-05-18 14:04:00 786

转载 sizeof用法,详解,终极无惑(上)

CSDN上看到了sizeof的一篇好文章,转来好好看看,选自CSDN博客:http://blog.csdn.net/freefalcon/archive/2004/07/28/54839.aspx0. 前向声明      sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所

2011-05-16 23:20:00 777

转载 C++中Static作用和使用方法

#include class Point{public:void output(){ }static void init(){ x = 0; y = 0;}private:static int x;static int y;};int Point::x = 0;int Point::y = 0;void main( void ){Point::init();}1、什么是static?       static

2011-05-15 18:53:00 867 1

原创 怎么防止类被继承?对于不能被继承的类,怎么初始化及销毁它的实例?

<br />“怎么防止类被继承?对于不能被继承的类,怎么初始化及销毁它的实例?”这是ADOBE公司的一道笔试题。<br />看了这道题目,笔者查阅了一些资料并结合自己的一些想法,写了这篇博客,有错误的地方请指出,谢谢。<br />首先看怎么防止类被继承。这里面介绍一种借用虚继承和友元机制实现的方法。其实说到底,防止一个类被继承,我们还是想怎么使的派生类在构造时不能够调用基类的构造函数,从而不能完成继承。我们都知道,派生类对象初始化时,首先要运行基类构造函数,将基类子对象进行初始化,之后再运行派生类的构造函数

2011-05-11 13:17:00 2548 1

转载 ADOBE笔试题(1)

<br />职位类型:技术(photoshop) 试题列表: <br />Session 1 <br />1、 static_cast 与 dynamic_cast 的区别 <br />2、const char * p; char const * p; char * const p; const char const *p; 以上四种表示的不同是什么? <br />3、手工实现strcpy函数,不能使用任何库函数,要求处理NULL、溢出等异常; <br />4、下面类的两种不同的构造函数的区别 Sample

2011-05-11 10:50:00 1100

转载 C/C++内存管理详解

[我觉得这是一篇很不错的文章,对C和C++的程序员来说,很有实用价值,故推荐给大家]作者:PingPong    文档来源:CSDN伟大的Bill Gates 曾经失言:  640K ought to be enough for everybody — Bill Gates 1981   程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。  1、内存分配方式  

2011-05-10 14:11:00 535

转载 C++中extern "C"用法

前天去笔试百度,就一道题是考C++中的语言语法问题的,还是我不会的,悲剧啊,题目大致是这样的:extern“c”{是什么含义,有什么作用??无语啊,以前没用过。。。回来之后开始在网上找答案。看了两篇博客,受益匪浅。第一篇:http://tech.163.com/06/0118/09/27O66HCC0009159Q.html第二篇:http://blog.csdn.net/bisword/archive/2009/02/19/3910824.aspx第一篇内容:时常在cpp的代码之中看到这样的代码: #if

2011-05-10 12:24:00 839

转载 虚函数 析构函数 抽象类

1. 析构函数和虚析构函数       如果基类的析构函数是虚的,那么它的派生类的析构函数都是虚的       这将导致:当派生类析构的时候,它的所有的基类的析构函数都将得到调用       否则,只调用派生类的析构函数(这可能导致基类的某些对象没有得到释放)          所以CObject类的析构函数是虚的,所有由它派生的类析构的时候一级一级的进行,不会造成内存泄漏。     无论基类的析构函数是否为虚析构函数. 基类的析构函数总是会被自动调用的;但是, 如果用基类指针去操作一个了派生类对象,如果不

2011-05-09 15:32:00 800

转载 数据结构笔记(转载)

第一章 概  论1.数据:信息的载体,能被计算机识别、存储和加工处理。2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。3.数据结构:数据之间的相互关系,即数据的组织形式。它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。常用的运算:检索/插入/删除/更新/排序。4.数据的逻辑结构可以看作是从具体问题抽象出来的

2011-05-05 09:12:00 743

转载 常见的C字符串处理函数的源代码

<br />以下是一些常见的C字符串处理函数的源代码,当然也是从网上找来的,学习它一个好处是加深理解C,另一个好外是应聘面试中的笔试常常会用到它们,呵呵。<br />char *strcpy(char *strDes, const char *strSrc)<br />{<br />    assert((strDes != NULL) && (strSrc != NULL));<br />    char *address = strDes;<br />    while ((*strDes ++ = *

2011-05-04 15:28:00 693

转载 《转载》在ubuntu10.04下成功安装 ns-allinone-2.34

原文网址:http://forum.ubuntu.org.cn/viewtopic.php?t=283247<br />step 1:下载NS安装包<br />到这个网址http://nsnam.isi.edu/nsnam/index.php/Downloading_and_installing_ns- 2,下载软件包<br />step 2:设置安装目录<br />这一步主要设置安装目录,也就是把安装包放到你想要的安装目录下,这里有两种方法,一是把安装包直接拷贝到安装目录,然后在解压;而是不改变软件包下载

2011-04-29 15:29:00 916

原创 ubuntu10.04 上海交通大学源配置

<br />打开Ubuntu的 终端,输入<br />sudo gedit /etc/apt/sources.list<br />删掉里边所有旧的内容,把新的源列表内容贴进去<br />再执行:<br />sudo apt-get update<br />就可以生效。#sjtu(上海交通大学更新服务器)deb http://ftp.sjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe<br />deb http://ftp.sjt

2011-04-29 15:28:00 7443

转载 C++ 学习之深拷贝与浅拷贝

<br />深拷贝与浅拷贝这个问题在面试中很喜欢出现啊!自己也懂一些,但是说的不够准确,看到一篇写的不错的博客,转载了。<br />Q:什么是浅拷贝(shallow copy)和深拷贝(deep copy)? <br />A: <br />浅拷贝就是成员数据之间的一一赋值:把值赋给一一赋给要拷贝的值。但是可能会有这样的情况:对象还包含资源,这里的资源可以值堆资源,或者一个文件。。当值拷贝的时候,两个对象就有用共同的资源,同时对资源可以访问,这样就会出问题。深拷贝就是用来解决这样的问题的,它把资源也赋值一次,

2011-04-26 16:37:00 735

原创 夏天来了,呆在实验室里不太爽

<br />今天的天气格外的热,实验室还有好多烦事处理,上海的夏天来了,心情烦躁。<br />努力吧,争取5月7号的百度笔试能考的好点!!!坚持一下

2011-04-26 14:07:00 507

原创 数据结构与算法学习之查找技术

<br />查找是对数据、文件处理时常使用的一种操作。查找算法主要分为两类,静态查找和动态查找。<br />静态查找是指查找过程中标的结构始终不会发生变化,而动态查找表会发生变化,通常伴随着插入和删除操作。一般衡量查找算法的优越性主要看平均查找长度和最大查找长度。<br />一、静态查找表<br />1.顺序查找<br />算法思想:从表的一端开始顺序扫描线性表,依次将扫描到的结点关键字与给定值K比较,若当前扫描到的结点关键字与k相等则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。<br

2011-04-25 14:57:00 1673

原创 数据结构与算法学习之二叉树的遍历:已知先序、中序、后序序列三者中的两种求另外一种遍历的算法

<br />初学数据结构,已经掌握了先序、中序和后序遍历的算法。但是看到有的笔试题有这样一种问题“已知先序、中序、后序序列三者中的两种求另外一种遍历”,挺有意思的,现在来总结一下:<br />三种遍历序列,已知两种,求第三种,我们下面分类讨论一下:<br />1)已知先序和中序,求后序<br />我们来举个简单的例子,先序序列为:ABDECF,中序序列为:DBEAFC。<br />算法思想:先序遍历树的规则为中左右,可以看到先序遍历序列的第一个元素必为树的根节点,比如上例中的A就为根节点。再看中序遍历为:左

2011-04-24 20:48:00 5847

原创 数据结构与算法学习之二叉排序树及二叉排序树的相关操作

<br />二叉排序树是数表动态查找中的一种重要应用。<br />二叉排序树具备以下特点:<br />1)若它的左子树不为空,则左子树上的各结点的值均小于它的根结点的值;2)若它的右子树不为空,则其右子树上的各结点的值均大于等于它的根节点的值;3)它的左子树和右子树分别又是一个二叉排序树。<br />二叉排序树中的一些操作应该掌握,如如何建立一个二叉排序树,它的插入和删除操作,以及查找某个元素值的操作。下面是本人在学习时联系写的一些代码:<br />#include <iostream>using na

2011-04-24 15:31:00 906

原创 数据结构与算法学习之二叉树及二叉树的相关操作

二叉树的各种遍历,递归、非递归实现,二叉树的建立。二叉树节点,叶子节点个数的统计,深度计算

2011-04-23 14:42:00 1090

原创 数据结构与算法学习之队列及队列的相关操作

队列也是一张表,它是一种插入操作在一端删除操作在另一端进行的表。队列的操作主要要抓住两个核心位置队头front和队尾rear。队列的主要操作就是入队与出队了。同样,队列也可以使用数组和链表两种方式实现。下面是本人在学习队列操作时利用链表方式实现的代码:/***************************************************************************//*********************队列的非顺序存储结构实现(链表实现)***********

2011-04-23 13:00:00 596

原创 数据结构与算法学习之栈及栈的相关操作

<br />栈是一种将插入和删除操作限制在一端的表,有时也成为LIFO表;栈的操作核心是使用一个栈顶指针top指向栈顶元素。<br />栈中有两个总要的操作就是Push和pop,进栈和出栈操作。<br />栈也可以使用两种方式建立,数组方法和链表方法。当然数组实现是连续存储的,但是使用起来需要预先估计数组的大小。链表实现是非连续<br />存储的,使用相对灵活。 <br />下面是本人在学习的时候将栈以数组和链表两种方法进行实现的代码。<br />链表实现code:<br />/**************

2011-04-23 10:42:00 579

原创 数据结构与算法学习之链表

<br />抽象数据类型ADT中的表可以用简单的数组实现。但是用数组实现有两个弊端:<br />1)首先要对表的大小的最大值进行估计,以便于创建相应长度的数组,如果过大,会浪费很多空间。<br />2)插入和删除操作在数组中的代价是昂贵的。因为插入一个元素或者删除一个元素会使得其他元素的位置需要相应的变化。<br />为了克服上面的困难,我们需要使得表的存储不连续,避免整体或者大规模的数据移动。链表的思想由此而生:<br />链表是由一系列不必在内存中相连的结构组成。每个结构包含一个表元素和一个指向后继结构

2011-04-20 10:15:00 478

原创 C++ 学习之模板

<br />      泛型编程就是以独立于任何特定类型的方式编写代码。它也是一种多态的应用,它可以使一个类或者一个函数操纵不同类型的对象。模板是泛型编程的接触。下面是个人对模板学习的一点总结。<br />1.函数模板<br />函数模板的定义以关键字template开始,后面接模板形参表,然后是函数返回类型,函数名称,函数形参表,函数体。例如:<br />template <class T,size_t N> void array_init(T (&parm)[N]) {<br />          

2011-04-19 14:01:00 599

原创 C++学习之虚函数

初学C++,虚函数这部分感觉博大精深啊。C++正是通过虚函数实现了多态。在C++中,以virtual关键字开始的函数是虚函数,虚函数是基类希望派生类进行重新定义的函数,不希望派生类重新定义而完全继承的不要定义为虚函数。一旦函数在基类中声明为虚函数,派生类就无法改变这个事实,派生类

2011-04-17 20:13:00 919

原创 C++ 学习之继承1:基类与派生类

<br />面向对象编程OOP(object-oriented programming)的关键思想是多态性。C++中多态性用于通过继承而相关联的类型的引用或指针。<br />首先看看基本的基类和派生类,以C++ primer中一个程序段为例:<br /><br />在基类Item_base中我们可以看到,这里面存在public、protected和private三种访问控制标号。public成员可以被一切用户代码所访问;protected成员可以由基类及派生类访问,但不能由普通用户代码访问;private成

2011-04-15 15:02:00 658

原创 C++ 学习之操作符重载

<br />C++中重载操作符其实是一个有特殊名称的函数:关键字operator后加上想要重载的符号,重载操作符同样需要有返回值类型和形参列表。<br />操作符重载一般有以下几点需要注意的:<br />1)重载操作符必须有一个类类型的操作数,这是为了避免对已有的内置类型对象的操作符的原本含义的更改;<br />2)重载后的操作符的优先级和结合性是固定不变的;<br />3)重载操作符为类成员函数时,它的形参表中会少一个形参,原因是有一个隐含形参this,而且该this形参限定为第一个操作数;<br />4

2011-04-14 12:57:00 1140

原创 C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数

构造函数中的这三个概念对于我这个初学者是需要时间和耐性去好好体会理解的。对于默认构造函数,大家的第一印象好像总是认为这样的,例如有一个类Aclass A{public:     A():a(0),b(2.09) {}private:     int a ;     double b;     string str;};好像总以为默认构造函数都是形参表中没有形参的那种。但事实上还有一种默认构造函数他是有形参的,只不过其中的形参都带有默认实参。如class A{public:     A(int c=0, do

2011-04-13 13:41:00 2873

原创 C++ 学习之构造函数:构造函数小结2 构造函数初始化列表

构造函数初始化列表以一个冒号:开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟着一个圆括号的初始化式。在日常使用中,构造函数初始化列表可以使用,也可以省略。此时要弄清楚构造函数执行其实是分为两个阶段的:1)初始化阶段;2)普通的计算阶段阶段。初始化阶段:初始化列表中显示初始化的成员按照列表中圆括号内的值初始化,而对于初始化列表中没有显式列出的成员,若是类成员,则调用该类型的默认构造函数初始化,若是内置类型或者复合类型,则按照变量初始化的原则,在局部作用域中的不做初始化,全局作用于中的初始化为0。

2011-04-12 12:26:00 762

原创 C++ 学习之构造函数:构造函数小结1

谈到C++的类,就必然少不了构造函数这个概念,下面是自己学习C++ primer后对构造函数一些知识点的总结和理解在创建类对象的时候,必然要执行构造函数,构造函数的功能是保证每个对象的数据成员具有合适的初始化。构造 函数是特殊的成员函数,它的名字与类型名称相同,而且没有返回值

2011-04-12 10:50:00 865

原创 C++ 学习之函数重载、基于const的重载

<br />函数重载<br />函数重载的定义是:在相同的作用域中,如果函数具有相同名字而仅仅是形参表不同,此时成为函数重载。注意函数重载不能基于不同的返回值类型进行重载。<br />注意函数重载中的“形参表”不同,是指本质不同,不要被一些表象迷惑。main函数不能被重载。<br />下面三组定义本质是相同的,不是重载:<br />1)int sum (int &a); 和 int sum (int &);<br />2)  int sum (int a) 和 int sum (const int a);<

2011-04-07 19:09:00 7630 2

原创 C++学习之main函数以及带形参的main函数

     C++程序包含一个或者多个函数,但是必须有一个函数被命名为main函数。操作系统通过调用main函数来执行程序,main函数是操作系统唯一显式调用的函数。main函数在执行结束后会返回给操作系统一个值,该值必须是int型的,通常返回值0代表程序执行成功,而其它返回值在操作系统中也有相应的含义。     通常我们使用的main函数都是不用带形参的,但其实main函数也是可以带形参的。在C/C++语言中,main()函数有参数形式:int main(int argc,char *argv[]) 或者

2011-04-07 14:07:00 4852 1

原创 C++ 学习之字符串流

<br />与C++文件读写思想类似,C++支持内存中的string对象的读写。将流对象与内存中的string对象进行绑定,之后便可以处理该字符串流。<br />C++中对行处理可以应用getline()函数,但当需要一个word一个word处理时,可以用stringstream实现。<br />使用字符串流时该注意两个问题<br />1.绑定问题:有两种方法可以将字符串流对象与内存中的string对象进行绑定。<br />1)stringstream strm(string对象);<br />2)stri

2011-04-03 15:54:00 996

原创 C++ 学习之文件的读写

对于C++文件的读写,个人认为关键之处在于牢记“文件流对象和文件的绑定是否正常”要想读写文件,必须先定义文件的流对象,并且将定义的流对象与想要处理的文件进行绑定。对文件进行绑定,少不了涉及文件名称。在C++中,文件名作为实参要求是C风格的字符串,而不是C++中的string类对象。通常的处理方法是用直接初始化的方法,括号中是C风格字符串;或者是将文件名赋值给一个string类对象,然后再调用c_str()成员函数进行转化。例如:string filename = "d://f1.txt";fstream F

2011-04-03 14:45:00 1274 1

原创 C++ 学习之函数:问题杂谈

下面总结几个关于函数部分知识的问题,也是自己在学习过程中概念不太清楚的东东。1.函数返回值当函数要返回一个引用时,千万别返回函数中的局部对象的引用,因为函数执行完会被释放,局部对象会被释放,因此对局部对象的引用将会指向不确定的内存;当函数返回一个指针的时候,千万别返回函数中的指向局部对象的指针,会引起悬垂指针问题。2.函数声明和默认实参函数原型是指返回类型,函数名,和形参表。当函数仅仅是声明的时侯,形参可以仅仅表明类型,不用有形参名。、默认实参是指给函数的形参表中的形参提供明确的初始值来制定的。如果一个形参

2011-04-02 15:55:00 668

原创 C++ 学习之函数传参2:vector和数组传参

前面一篇博客讲到了在函数的传参中数组是不能依靠复制传递的,而vector是可以复制的,但是由于vector中通常会含有很多元素,为了避免大量的复制,可以将容器实参以引用的方式避免复制。下面主要讲讲在实际当中,对数组和容器的传参的习惯手法。1.数组传参1)使用指针传参(数组除了不能够具有直接复制的特性,还有一个特性,就是数组名通常情况下会自动转化为指向其第一个元素的指针)具体形式有void   size_array( int *);void   size_array( int array[]);void  

2011-04-02 13:52:00 6195

原创 C++ 学习之函数传参1:引用传参和非引用传参

个人认为C++函数传参的一个指导性原则是:若函数的形参是非引用类型,传参时实际上是使用复制实参的值给形参,是实参值的副本,而非真正的实参;若函数的形参是引用类型的,则传递的其实就是实参本身,形参只不过是实参本身的别名而已。1.非引用类型的形参(牢记关键词——复制实参的副本)永远不要忘记传递进来的是实参的副本,与实参本身并无“太多直接”关系。在使用非引用类型形参的时候,如果不需要对实参本身做修改,则直接传递即可。此时const形参,非const形参的值初始化问题五特殊要求,它们只是想用实参的副本值来初始化自己

2011-04-02 13:15:00 4355

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除