03 2015 档案
摘要://直接插入排序void InsertSort(int A[], int n){ int i,j; int temp; for (i=0;i-1&&temp=n)return -1; int index=RandomInRange(start, end); swap(&A[index],&A[e...
阅读全文
摘要:1、(无重复)Search in Rotated Sorted ArraySuppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e.,0 1 2 4 5 6 7might become4 5 6 7 ...
阅读全文
摘要:问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delet...
阅读全文
摘要:问题描述之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能创建单一种类的产品,当需要生产一种全新的产品(不继承自Prod...
阅读全文
摘要:问题描述之前讲到了C++设计模式——简单工厂模式,由于简单工厂模式的局限性,比如:工厂现在能生产ProductA、ProductB和ProductC三种产品了,此时,需要增加生产ProductD产品;那么,首先是不是需要在产品枚举类型中添加新的产品类型标识,然后,修改Factory类中的switch...
阅读全文
摘要:问题描述之前在公司做了一个windows 8平台的阅读器。首先,需要将电子书中的内容渲染到屏幕上,而电子书每一页都包含各种各样的内容,比如:图形、图像和文字等等;不同的内容,就是不同的对象;在将不同的内容渲染到屏幕上之前,就需要new操作,建立不同的对象,然后再在屏幕上进行描绘。这个时候,就需要进行...
阅读全文
摘要:一、fork入门知识一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代...
阅读全文
摘要:把基本经典的书籍认真看看,那些笔试面试的都不是什么问题。但是,专门的突击和训练还是很有必要的。好的offer是可以通过充分的准备刷到的。我们就从各大公司的套题开始刷起吧,中间再穿插一些专题。今天先看看腾讯的2014年校招的软开笔试题。考试时长:120分钟一不定项选择题(共25题,每题4分,共100分...
阅读全文
摘要:一.简答题1.简述iso的7层设计解析:应用层:提供应用程序间通信表示层:处理数据格式、数据加密等会话层:建立、维护和管理会话运输层:建立主机端到端连接网络层:寻址和路由选择数据链路层:介质访问,链路管理物理层:比特流传输2.如何在多个进程间进行数据共享(至少写出3种)Linux下:管道信号量共享内...
阅读全文
摘要:第一部分单选题(前10题,每题2分;后10题,每题3分。选对得满分,选错倒扣1分,不选得0分)1、一次内存访问,SSD硬盘访问和SATA硬盘随机访问的时间分别是()A、几微秒,几毫秒,几十毫秒B、几十纳秒,几十毫秒,几十毫秒C、几十纳秒,几十微秒,几十毫秒D、几微秒,几十微秒,几十毫秒解析:内存访问...
阅读全文
摘要:第一部分:单选题1.假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数A:h(K)=K/N;B:h(K)=1;C:h(K)=KmodN;D:h(K)=(K+rand(N))modN,rand(N)返回0到N-1的整数解析: 首先,D最复杂,当然首选D。。 D选项使用的是随机数法+...
阅读全文
摘要:转载自:LeetCode Question Difficulty Distribution1Two Sum25arraysortsetTwo Pointers2Add Two Numbers34linked listTwo PointersMath3Longest Substring Without...
阅读全文
摘要:http://www.kuqin.com/shuoit/20150116/344435.htmlC++设计模式系列该系列主要总结了使用C++来实现各种设计模式,并结合实际的案例来分析如何使用,以及在什么场合下使用设计模式。以下是该系列所有文章的链接。希望对大家有帮助。C++设计模式——简单工厂模式C...
阅读全文
摘要:1、基本概念 详见:线程和进程关系和区别、同步和互斥、进程间通信2、以下多线程对int型变量x的操作,哪几个不需要进行同步(D) A. x=y; B. x++; C. ++x; D. x=1; 详见:多线程二 多线程中的隐蔽问题揭秘3、多线程中栈与堆是公有的还是私有的 (C) A:栈公有, 堆私有 ...
阅读全文
摘要:假设主串:a b a b c a b c a c b a b 子串:a b c a c1、一般匹配算法逐个字符的比较,匹配过程如下: 第一趟匹配 a b a b c a b c a c b a b a bc 第二趟 a b a b c a b c a c b a b a 第三趟 ...
阅读全文
摘要:1、线程的基本概念 概念:线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 ...
阅读全文
摘要:1、从set/map谈到hashtable/hash_map/hash_set稍后本文第二部分中将多次提到hash_map/hash_set,下面稍稍介绍下这些容器,以作为基础准备。一般来说,STL容器分两种: 序列式容器(vector/list/deque/stack/queue/heap), 关...
阅读全文
摘要:1 vector在C++中使用vector应该是非常频繁的,但是你是否知道vector在计算内存分配是如何么? 在c++中vector是非常类似数组,但是他比数组更加灵活,这就表现在他的大小是可以自动分配的,就是当你的数据量增大的时候,自动的为你分配空间,当你的分配的大小不够的时候,他就会在分配的内...
阅读全文
摘要:1、什么是const?常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)2、为什么引入const?const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。3、cons有什么主要的作用?(1)可以定义co...
阅读全文
摘要:栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由new分配的内存块,他们的释放编...
阅读全文
摘要:对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#includeusingnamespacestd;classCExample{private: inta;...
阅读全文
摘要:构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:classCExample{public:inta;floatb;//构造函数初始化列表CExample():a(0),b(8.8){}//构造函数内部赋值CExample(){a=0...
阅读全文
摘要:.Net提供了接口,这个不同于Class或者Struct的类型定义。接口有些情况,看似和抽象类一样,因此有些人认为在.Net可以完全用接口来替换抽象类。其实不然,接口和抽象类各有长处和缺陷,因此往往在应用当中,两者要结合来使用,从而互补长短。 接下来先说说抽象类和接口的区别。 区别一,两者表达的...
阅读全文
摘要:性能分析工具软件的性能是软件质量的重要考察点,不论是在线服务程序还是离线程序,甚至是终端应用,性能都是用户体验的关键。这里说的性能重大的范畴来讲包括了性能和稳定性两个方面,我们在做软件测试的时候也是要重点测试版本的性能表现和稳定性的。对于软件测试过程中发现的性能问题,如何定位有很多的方法。基本的方法...
阅读全文
摘要:一. 原理tcmalloc就是一个内存分配器,管理堆内存,主要影响malloc和free,用于降低频繁分配、释放内存造成的性能损耗,并且有效地控制内存碎片。glibc中的内存分配器是ptmalloc2,tcmalloc号称要比它快。一次malloc和free操作,ptmalloc需要300ns,而t...
阅读全文
摘要:1. 概述STL Allocator是STL的内存管理器,也是最低调的部分之一,你可能使用了3年stl,但却不知其为何物。STL标准如下介绍Allocatorthe STL includes some low-level mechanisms for allocating and deallocat...
阅读全文
摘要:[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃...
阅读全文
摘要:很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无...
阅读全文
摘要:本文给出了一种方法。基本思想是,写一个 wrapper文件,把 C++类封装起来,对外只提供C语言的接口,和 C++i相关的都在 wrapper的实现文件里实现。1. apple.h[cpp]view plaincopyprint?#ifndef__APPLE_H__#define__APPLE_H...
阅读全文
摘要:参考:12345678910111213141516#include #include intmain(){inta[]={12,34,56,78,90,11,22};charbuff[10],b[500];inti;b[0]='\0';for(i=0;iintsprintf_s(char(&buf...
阅读全文
摘要:如何在c++代码里调用c的库或者函数?如何在c代码里调用c++的函数?注意这里的C调用C++或者C++调用C意思是.c文件中调用.cpp文件中代码,或者相反。集成开发环境如VC++6.0或者vs都是以文件后缀来区别当前要编译的是C代码还是C++代码,然后采用响应的编译、调用协议等。使用extern ...
阅读全文
摘要:原文地址:http://blog.csdn.net/free0sky/article/details/7927275一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答: 1、String是字符串常量,StringBuffer和S...
阅读全文
摘要:这是我做的第二个leetcode题目,一开始以为和第一个一样很简单,但是做的过程中才发现这个题目非常难,给人一种“刚上战场就踩上地雷挂掉了”的感觉。后来搜了一下leetcode的难度分布表(leetcode难度及面试频率)才发现,该问题是难度为5的问题,真是小看了它!网上搜了很多答案,但是鲜见简明正...
阅读全文
摘要:自我介绍1、哈希表及其实现机制2、C++的三个特征及其解释3、抽象与接口的区别4、设计模式
阅读全文
摘要:首先让自我介绍,然后介绍自己的项目,之后问了几个问题:1:数组和链表的区别;2:有重复的字符串数组,找出重复次数最多的字符串;3: 给一个袋子,里面装有1个白球,n-1个红球,n个人分别从袋子里取球,如何做到每个人取到白球的概率为1/n;4: 给长度可能不同的两个有序数组,求两者合并后的中间那个数;...
阅读全文
摘要:1、抽象类和普通类的区别:抽象类不能被实例话,只能被继承,抽象方法可以没有实体,必需有子类来重写。由上面的可以看出抽象类就是为了作基类用的。可以定义子类的共同的方法,以方例多态使用。抽象类可以应用多态,但是普通类不可以。抽象类只能作为基类,提供接口,不能有实例。普通类既可以作为基类,又可以有实例。2...
阅读全文
摘要:几乎所有的面向对象的编程语言都保护构造函数与析构函数,好学者就要举手了,啥情况啊,Java里面不就没有析构函数嘛。好吧,你问倒我了,不过可以认为Java的垃圾自动回收机制实现了对象析构的功能。管他呢,还是看C++的构造函数和析构函数吧。构造函数 对于C++的构造函数,暂且将其分为以下几类:1. 默...
阅读全文
摘要:1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚...
阅读全文
摘要:面向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是...
阅读全文
摘要:静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯...
阅读全文
摘要:1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; ...
阅读全文
摘要:投了阿里巴巴暑期实习的岗位,过了几天就收到了电话面试,第一次是周六的下午,难道阿里巴巴的员工周六都还要加班,太恐怖了...当时在外面逛街,就重新约了另外的时间。周一的晚上就收到的电话,想想这个时间应该正常。作为程序员平时还是要以公司的事情为重的,闲下来了之后才能做一些面试的工作,所以他把时间安排在了...
阅读全文
摘要:一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实...
阅读全文
摘要:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。...
阅读全文
摘要:TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为...
阅读全文
摘要:堆和栈的区别一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 ...
阅读全文
摘要:strcpy是拷贝字符串,以\0为标志结束(即一旦遇到数据值为0的内存地址拷贝过程即停止)strcpy的原型为 char *strcpy(char *dest, const char *src)而memcpy是给定来源和目标后,拷贝指定大小n的内存数据,而不管拷贝的内容是什么(不仅限于字符)memc...
阅读全文
摘要:引言对一个给定数据进行全排列,在各种场合经常会用到。组合数学中,生成全排列的方法有很多,卢开澄老师的《组合数学》中就介绍了三种:序数法,字典序法,临位互换法等。其中以字典序法由于算法简单,并且使用的时候可以依照当前状态获取下一个状态,直到所有排列全部完成,方便在程序中随要随用,应用比较广泛,STL中...
阅读全文
摘要:(收集整理from web)1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析...
阅读全文