上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 题目1 : String reorder时间限制:10000ms单点时限:1000ms内存限制:256MBDescriptionFor this question, your program is required to process an input string containing only ASCII characters between ‘0’ and ‘9’, or between ‘a’ and ‘z’ (including ‘0’, ‘9’, ‘a’, ‘z’).Your program should reorder and split all input string ch 阅读全文
posted @ 2014-04-12 21:30 z陵 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 一,c/c++字符串1.C/C++中每个字符串都以字符’\0‘作为结尾,这样我们就能很方便地找到字符串的最后尾部。由于这个原因每个字符串都有一个额外的开销,注意字符串越界的问题;2.C/C++内存模型把字符串常量放到单独的一个内存区域;当几个指针指向相同的字符串常量的时候,他们实际上会指向常量区那个的内存地址;但是用字符串常量初始化数组,情况却不一样,这点很重要,考察你C能力的筹码;test.c:1234567891011121314151617181920212223242526272829#includeintmain(){charstr1[]="helloworld" 阅读全文
posted @ 2014-04-12 10:00 z陵 阅读(2923) 评论(2) 推荐(1) 编辑
摘要: 【面试题003】c数组做为参数退化的问题,二维数组中的查找一,c数组做为参数退化的问题1.c/c++没有记录数组的大小,因此用指针访问数组中的元素的时候,我们要确保没有超过数组的边界,通过下面的程序了解数组与指针的区别。array.c:12345678910111213141516171819202122232425262728#include#includeintGetSize(intdata[]){returnsizeof(data);}intmain(){intdata1[]={1,2,3,4,5};/*data1是一个数组*/intsize1=sizeof(data1);int*dat 阅读全文
posted @ 2014-04-11 10:48 z陵 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 【面试题001】类型转换关键字,空类对象模型,拷贝构造函数,赋值运算符函数一,在C++中,有哪4个与类型转换相关的关键字? 好多书籍,推荐使用类型转换的关键字,但是c风格的类型转换操作,确实很方便,但是不易掌握。1、const_cast号称唯一具有常量性移除的转型操作符,这个说法实在很废话,不解释。平时几乎没有用过,遇到需要这个关键字的时候,都是直接修改了接口的类型,也不会去用这个关键字,一般来说老接口设计有问题啊。明明是const的,非得转成non-const实在别扭。2、dynamic_cast号称安全向下转型(safe downcasting),就是把一个父类型转成它的子类型,如果不是父 阅读全文
posted @ 2014-04-10 20:19 z陵 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 【面试题002】java实现的单例模式,c++实现单例模式,实现禁止拷贝一 c++实现单例模式保证一个类,在一个程序当中只有一个对象,只有一个实例,这个对象要禁止拷贝,注意这里要区别于java。否者的话一个程序当中就可能出现多个对象的拷贝。我们要禁止拷贝,需要将拷贝构造函数以及等号运算符 声明为私有的,并且呢不提供他们的实现。这样子如果我们代码里面有拷贝构造的话,编译时候会出错。仅仅这样子是不够的,我们必须将构造函数声明为私有的,这是为了防止外部呢,任意的构造对象。既然我们将构造函数私有化了,外部就不能通过 Singleton s1; 来定义这样一个对象。那我们就需要提供一个接口让外部呢得到这 阅读全文
posted @ 2014-04-10 20:18 z陵 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 设计模式就是要降低代码编写过程中出错的概率,以及考虑减少今后代码出问题的概率,不遵守这六个原则现在或者将来出问题的概率会大大增加。目标是,当需求变化时候需要修改代码的时候,某些测试好的逻辑是不需要修改的,你只需要去扩展代码即可满足新的需求。想数据库模式设计一样,也不能一味的遵守第一第二第三范式(一般遵守到这三个范式就可以了),得根据实际情况反复权衡。遵守程度只要在一个合理的范围内,就算是良好的设计。引入中间层或者隔离层,或者上层,来抽象,来封装。类与类之间的关系,数据库中表与表的关系,函数中,一个函数调用另一个函数的关系,递归函数的调用关系 阅读全文
posted @ 2014-04-09 09:21 z陵 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。开闭原则可能是设计模式六项原则中定义最模糊的一个了,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。以前,如果有人告诉我“你 阅读全文
posted @ 2014-04-09 09:20 z陵 阅读(799) 评论(0) 推荐(1) 编辑
摘要: 定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的。迪米特法则又叫最少知道原则,最早是在1987年由美国Northeastern University的Ian Holland提出。通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说, 阅读全文
posted @ 2014-04-09 09:19 z陵 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1未遵循接口隔离原则的设计)这个图的意思是:类A依赖接口I中的方法1、方法2、方法3,类B是对类A依赖的实现。类C依赖接口I中的方法1、方法4、方法5,类D是对类C依赖的实现。对于类B和类D来说,虽然他们都存在着用不到的方法(也就是图 阅读全文
posted @ 2014-04-09 09:18 z陵 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定的多。在java中,抽象 阅读全文
posted @ 2014-04-09 09:17 z陵 阅读(218) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页