1.C和C++中struct有什么差别?

1>
C++中的struct类似于class,有变量。有构造函数、虚函数等。有继承,多态等类的特征;

2>
C中的struct仅仅有变量,不能有函数,可是能够有函数指针

2.C++中的struct和class有什么差别?

在C++中,两者差别不大,可是有2个基本的差别

1>.
继承权限:struct默认是public继承;class默认是private继承

2>.
訪问权限:struct默认是public訪问。class默认是private訪问

3.怎样推断一段程序是由C
编译程序还是由C++编译程序编译的?

【标准答案】

#ifdef __cplusplus

cout<<“c++";

#else

cout<<"c";

#endif

(这个曾经还真没注意过,涨姿势了。

。。)

4.C和C++有什么不同?

【參考答案】

从机制上:

c是面向过程的(但c也能够编写面向对象的程序)。

c++是面向对象的,提供了类。可是,c++编写面向对象的程序比ceasy。

从适用的方向: c适合要求代码体积小的,效率高的场合。如嵌入式;
c++适合更上层的,复杂的; llinux核心大部分是c写的,由于它是系统软件,效率要求极高。

从名称上也能够看出。c++比c多了+。说明c++是c的超集;那为什么不叫c+而叫c++呢,是由于c++比 c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++。

C语言是结构化编程语言,C++是面向对象编程语言。 C++側重于对象而不是过程,側重于类的设计而不是逻辑的设计。

关于这个问题。个人认为《Effective
C++》上面第一条说的非常好,

View C++ as a federation of languages. 把C++当做一个语言联邦。

C++由四部分组成

1> C语言部分;

2> 面向对象部分。包含封装、继承、多态这些C语言所没有的特性。

3> 泛型编程部分,大多数类、函数要考虑到把它设计成模板,方便复用。

4> STL库,里面封装了大量的优秀模板,是 3> 中内容的集成, 学会使用它们能够让代码更高效。

当然,最好去深入了解STL源代码,那样会对C++有更深的理解。

5.“引用”与指针的差别是什么?

   【參考答案】

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。

程序中使用指针。程序的可读性差;而引用本身就是目标变量的别名。对引用的操作就是对目标变量的操作。

在还有一本C++著作《More Effective C++》里,第一条就是论述 point 和 reference的差别

总结一下 。

1> 指针是一个存储地址的变量。而引用是一个变量的别名。

所以在一个函数中,传引用要比传指针速度更快。

2> 指针能够指向一个空值。而引用必须初始化。指针能够例如以下形式出现

  1. int *p;

是合法但不合理的(相当于是一个野指针)。

能够声明一个指向空值的指针

  1. int *p=null

而引用不行

  1. int &r;

是错误的

引用必须初始化为一个变量的别名,如

  1. int a=5;
  2. int &r=a;

3> 也是由于 2>的特性。指针在使用前要推断是否为空。而引用必然不为空(否则会报错),所以不用推断。

4> 指针能够更改指向的内存地址,而引用是和变量绑定的。不可更改。

5> 在运算符重载过程中,通常返回一个引用往往比返回一个指针更好。使用指针易引起语义上的歧义。

6.

class A

{

virtual void func1();

void func2();

} 。

class B: class A

{

void func1()

{

cout < < "fun1 in class B" < < endl;

}

virtual void func2()

{

cout < < "fun2 in class B" < < endl;

}

A, A中的func1和B中的func2都是虚函数

B, A中的func1和B中的func2都不是虚函数.

C, A中的func2是虚函数.,B中的func1不是虚函数.

D, A中的func2不是虚函数,B中的func1是虚函数.

【标准答案】A

水题。。

7.int id[sizeof(unsigned long)];这个对吗?为什么?

【标准答案】

正确

这个 sizeof是编译时运算符,编译时就确定了 能够看成和机器有关的常量。

8.某文件里定义的静态全局变量(或称静态外部变量)其作用域是 ()?

A.仅仅限某个函数 B.本文件   C.跨文件 D.不限制作用域

【參考答案】B。

静态全局变量则限制了其作用域。 即仅仅在定义该变量的源文件内有效, 在同一源程序的其他源文件里不能使用它。

因为静态全局变量的作用域局限于一个源文件内,仅仅能为该源文件内的函数公用, 因此能够避免在其他源文件里引起错误。

在《C和指针》上看过,statickeyword会改变具有外部链接性的变量和函数

9.C++函数中值的传递方式有哪几种?

【标准答案】

C++函数的三种传递方式为:值传递、指针传递和引用传递。

(指针传递就是通常说的地址传递)

10.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?

【标准答案】c用宏定义。c++用inline

define实现的函数功能easy出bug。所以在c++中最好不要使用

11.引用与指针有什么差别?

【參考答案】
 

1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针能够改变所指的对象。

3) 不存在指向空值的引用,可是存在指向空值的指针。





能够參考下 在 5 题中补充的内容









12.C++中virtual与inline的含义各自是什么?

【參考答案】

在基类成员函数的声明前加上virtualkeyword。意味着将该成员函数声明为虚函数。

inline与函数的定义体放在一起,使该函数称为内联。

inline是一种用于实现的keyword。而不是用于声明的keyword。



虚函数的特点;假设希望派生类可以又一次定义基类的方法,则在基类中将该方法定义为虚方法,这样可以启用动态联编。



内联函数的特点;使用内联函数的目的是为了提高函数的执行效率。内联函数体的代码不能过长,由于内联函数省去调用函数的时间是以代码膨胀为代价的。

内联函数不能包括循环语句。由于执行循环语句要比调用函数的开销大。

哈!

我想我确实要注意一下表达能力。。

13.

VC中,编译工具条内的Debug与Release选项是什么含义?

【參考答案】

Debug 通常称为调试版本号。它包括调试信息,而且不作不论什么优化,便于程序猿调试程序。

Release 称为公布版本号,它往往是进行了各种优化,使得程序在代码大小和执行速度上都是最优的。以便用户非常好地使用。





Debug带有大量的调试代码,执行时须要对应的执行库。

公布模式程序紧凑不含有调试代码和信息。直接能够执行(假设不须要执行库)









14.函数assert的使用方法?

【參考答案】断言assert是仅在debug版本号起作用的宏,用于检查“不应该“发生的情况。

程序猿能够把assert看成一个在不论什么系统状态下都能够安全使用的无害測试手段





学VC++的时候见过assert宏定义,可是自己从来没用过。

。。









15.const  与 #define 的比較 ,const有什么长处?

【參考答案】

(1) const 常量有数据类型,而宏常量没有数据类型。编译器能够对前者进行类型安全检查。而对后者仅仅进行字符替换,没有类型安全检查,而且在字符替换可能会产生意料不到的错误(边际效应) 。 

#define不能生成 类的专属常量,由于它仅仅是进行简单的替换。。

(2)  有些集成化的调试工具能够对 const 常量进行调试。可是不能对宏常量进行调试。





《Effective C++》中建议以const、enum、inline取代#define。

使用enum的原因

有些情况下,编译器不同意静态常量出如今类的初始设定中,仅仅得以enum的形式

还有一方面,enum和#define更相似,它们都没有详细的类型,比方。有const int a; 却没有 #define N int a。enum和#define都不可以被去地址。而const可以。









16.请你谈谈引用和指针的差别。

【參考答案】

(1)引用被创建的同一时候必须被初始化(指针则能够在不论什么时候被初始化) 。 

(2)不能有 NULL 引用,引用必须与合法的存储单元关联(指针则能够是 NULL) 。 

(3)一旦引用被初始化,就不能改变引用的关系(指针则能够随时改变所指的对象) 。

不断地出现。可见这个问题是常常easy被问到的。

17.

有了 malloc/free 为什么还要 new/delete  ?

【參考答案】

malloc 与 free 是 C++/C 语言的标准库函数,new/delete 是 C++的运算符。

它们都可用于申请动态内存和释放内存。

对于非内部数据类型的对象而言。光用 malloc/free 无法满足动态对象的要求。

对象在创建的同一时候要自己主动运行构造函数,对象在消亡之前要自己主动运行析构函数。

因为malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不可以把运行构造函数和析构函数的任务强加于 malloc/free。 

因此 C++语言须要一个能完毕动态内存分配和初始化工作的运算符 new。以及一个能完毕清理与释放内存工作的运算符 delete。

注意 new/delete 不是库函数。





曾经仅仅是习惯在用C时用malloc/free,用C++时用new/delete,没注意到这些差异性。

18.假设在申请动态内存时找不到足够大的内存块,malloc 和 new 将返回 NULL 指针,宣告内存申请失败。你是怎么处理内存耗尽的?

【參考答案】

(1)推断指针是否为 NULL,假设是则立即用 return 语句终止本函数。

(2)推断指针是否为 NULL,假设是则立即用 exit(1)终止整个程序的执行 

(3)为 new 和 malloc 设置异常处理函数。比如 Visual C++能够用_set_new_hander 函数为 new 设置用户自定义的异常处理函数。也能够让 malloc 享用与 new 同样的异常处理函数。

我通常是直接return 了









19.C++是不是类型安全的?

【參考答案】不是。两个不同类型的指针之间能够强制转换(用reinterpret cast)。









20. const 符号常量;

(1)const char *p 

(2)char const *p (

3)char * const p

说明上面三种描写叙述的差别;

【參考答案】

(1)p是一个指向const char的指针,p是能够改变指向的。可是p指向的值是不能改变的;        

(2)p指向的恰好是一个指向const的char的普通指针。

(3)p是一个指针,这个指针是指向char的const指针。        

(1)和(2)的定义是一样的。

1、2和3的差别在于,1和2的const出如今*号左边,3出如今*号右边。好像也是在《C和指针》上看到的这句话。

21.用C++写个程序,怎样推断一个操作系统是16位还是32位的?

【标准答案】定义一个指针p,打印出sizeof(p),假设节果是4,则表示该操作系统是32位,打印结果是2,表示是16位。

22.用C++写个程序,怎样推断一个操作系统是16位还是32位的?不能用sizeof()函数。

【參考答案】

  1. int a = ~0;
  2. if( a>65536 )
  3. {
  4. cout<<"32 bit"<<endl;
  5. }
  6. else
  7. {
  8. cout<<"16 bit"<<endl;
  9. }

这个參考答案预计參考了不少年了。。。

如今大部分机器都32、64位的了,所以,应该把65536改为4294967296。来推断机器是 32位 || 64 位

23.

  1. void * ( * (*fp1)(int))[10];
  2. float (*(* fp2)(int,int,int))(int);
  3. int (* ( * fp3)())[10]();

分别表示什么意思?

【标准答案】

1.void * ( * (*fp1)(int))[10];

fp1是一个指针,指向一个函数。这个函数的參数为int型,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素。每一个元素是一个void*型指针。

2.float (*(* fp2)(int,int,int))(int);

fp2是一个指针,指向一个函数。这个函数的參数为3个int型,函数的返回值是一个指针。这个指针指向一个函数,这个函数的參数为int型,函数的返回值是float型。

3.int (* ( * fp3)())[10]();

fp3是一个指针,指向一个函数,这个函数的參数为空。函数的返回值是一个指针。这个指针指向一个数组。这个数组有10个元素,每一个元素是一个指针,指向一个函数。这个函数的參数为空。函数的返回值是int型。

24.多态类中的虚函数表是Compile-Time。还是Run-Time时建立的?

【标准答案】虚拟函数表是在编译期就建立了,各个虚拟函数这时被组织成了一个虚拟函数的入口地址的数组.而对象的隐藏成员--虚拟函数表指针是在执行期--也就是构造函数被调用时进行初始化的,这是实现多态的关键。

25.错误的转义字符是 ()

A.'\091' B.'\\'

C.'\0' D.'\'‘

【标准答案】A

A错误的关键在于。当中出现了9,这样它就不是8进制的转换了。

26.若数组名作实參而指针变量作形參,函数调用实參传给形參的是 ()

A.数组的长度 B.数组第一个元素的值C.数组全部元素的值
D.数组第一个元素的地址

【标准答案】D

27.变量的指针含意是指变量的 ()

A.值   B.地址 C.存储  D.名字

【标准答案】B

28.内存的分配方式有几种?

【參考答案】

一、从静态存储区域分配。内存在程序编译的时候就已经分配好。这块内存在程序的整个执行期间都存在。

比如全局变量。

二、在栈上创建。在运行函数时。函数内局部变量的存储单元都能够在栈上创建,函数运行结束时这些存储单元自己主动被释放。栈内存分配运算内置于处理器的指令集中,效率非常高。可是分配的内存容量有限。

三、从堆上分配,亦称动态内存分配。程序在执行的时候用malloc或new申请随意多少的内存,程序猿自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用很灵活。但问题也最多。

29.float a,b,c ,问等式 (a+b)+c==(b+a)+c 和(a+b)+c==(a+c)+b是否能成立?

【參考答案】

两者都不行。

在比較float或double时。不能简单地比較。因为计算误差,相等的概率非常低。应推断两数之差是否落在区间(-e,e)内。这个e应比浮点数的精度大一个数量级。

我想到的是还有一个运算符 %。

不能对float或double使用%运算符。原因和參考答案中的说法类似

30.全局变量和局部变量有什么差别?是怎么实现的?操作系统和编译器是怎么知道的? 

【參考答案】

1>/2>

生命周期不同:

全局变量随主程序创建而创建,随主程序销毁而销毁;内存中分配在全局数据区。

局部变量在局部函数内部。甚至局部循环体等内部存在。退出就不存在; 分配在栈区。

使用方式不同:

通过声明后全局变量程序的各个部分都能够用到;

局部变量仅仅能在局部使用。

3>

操作系统和编译器通过内存分配的位置来知道的,

全局变量分配在全局数据段而且在程序開始执行的时候被载入。

局部变量则分配在堆栈里面 。

另,全局变量会被初始化为0。而局部变量以随机值进行初始化

31.Heap与stack的区别

【參考答案】

Heap是堆。stack是栈。

Stack的空间由操作系统自己主动分配/释放。Heap上的空间手动分配/释放。

Stack空间有限,Heap是非常大的自由存储区

C中的malloc函数分配的内存空间即在堆上,C++中相应的是new操作符。

程序在编译期对变量和函数分配内存都在栈上进行,且程序执行过程中函数调用时參数的传递也在栈上进行

32.In C++, what does "explicit" mean? what does "protected" mean? 

【标准答案】

c++中的explicitkeyword用来修饰类的构造函数,表明该构造函数是显式的。在某些情况下,我们要求类的使用者必须显示调用类的构造函数时就须要使用explicit,反之默认类型转换可能会造成无法预期的问题。

protected控制的是一个函数对一个类的成员(包含成员变量及成员方法)的訪问权限。protected成员仅仅有该类的成员函数及其派生类的成员函数能够訪问。

我擦!

它俩为啥放在一起问。

33.反复多次fclose一个打开过一次的FILE *fp指针会有什么结果,并请解释。 

【參考答案】考察点:导致文件描写叙述符结构中指针指向的内存被反复释放,进而导致一些不可预期的异常。

34.为什么数组名作为參数,会改变数组的内容,而其他类型如int却不会改变变量的值?

【參考答案】当数组名作为參数时,传递的实际上是地址。

而其它类型如int作为參数时,因为函数參数值实质上是实參的一份拷贝,被调函数内部对形參的改变并不影响实參的值。

传值与传地址的差别

35.你认为假设不使用常量。直接在程序中填写数字或字符串。将会有什么麻烦? 

【參考答案】

(1)  程序的可读性(可理解性)变差。程序猿自己会忘记那些数字或字符串是什么意思,用户则更加不知它们从何处来、表示什么。

(2)  在程序的非常多地方输入相同的数字或字符串,难保不发生书写错误。 

(3)  假设要修改数字或字符串,则会在非常多地方修改。既麻烦又easy出错。

36.为什么须要使用堆,使用堆空间的原因?

【參考答案】直到执行时才知道一个对象须要多少内存空间。不知道对象的生存期究竟有多长。

由于须要动态分配内存啊。。。

37. constkeyword?有哪些作用

【參考答案】constkeyword至少有下列n个作用:

(1)欲阻止一个变量被改变,能够使用constkeyword。在定义该const变量时。通常须要对它进行初始化,由于以后就没有机会再去改变它了;

(2)对指针来说,能够指定指针本身为const,也能够指定指针所指的数据为const。或二者同一时候指定为const。

(3)在一个函数声明中。const能够修饰形參。表明它是一个输入參数,在函数内部不能改变其值;

(这样既能够利用传地址、传引用的高效特性。又保证了传值的安全性)

(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能改动类的成员变量;

还记得假设要改动成员变量。应该把成员变量声明为什么吗?mutable!

(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。

很多其它更具体的内容。推荐看《Effective C++》

38.、是不是一个父类写了一个virtual 函数,假设子类覆盖它的函数不加virtual ,也能实现多态?

【參考答案】virtual修饰符会被隐形继承的。virtual可加可不加。子类的空间里有父类的全部变量(static除外)。同一个函数仅仅存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里。有父类的私有变量。私有变量不能直接訪问。

只是最好是加上,加上表明它是一个虚函数,这样提高了代码的阅读性。

39.面向对象的三个基本特征。并简单叙述之?

【參考答案】

1. 封装:将客观事物抽象成类,每一个类对自身的数据和方法实行protection(private,protected,public)

2. 继承:广义的继承有三种实现形式:

实现继承(指使用基类的属性和方法而无需额外编码的能力)、

可视继承(子窗口使用父窗口的外观和实现代码)、

接口继承(仅使用属性和方法,实现滞后到子类实现)。

前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

3. 多态:是将父对象设置成为和一个或很多其它的与他的子对象相等的技术,赋值之后,父对象就能够依据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:同意将子类类型的指针赋值给父类类型的指针。

40.重载(overload)、重写(override,有的书也叫做“覆盖”)、重定义(redefinition)的差别?

【标准答案】

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTY5NDgwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border:none; max-width:100%">

41.多态的作用?

【參考答案】

主要是两个:

1. 隐藏实现细节。使得代码可以模块化;扩展代码模块,实现代码重用;

2. 接口重用:为了类在继承和派生的时候。保证使用家族中任一类的实例的某一属性时的正确调用。

42.当一个类A 中没有声明不论什么成员变量与成员函数,这时sizeof(A)的值是多少,假设不是零,请解释一下编译器为什么没有让它为零。

【标准答案】sizeof(A)= 1;

编译器不同意一个类的大小为0。会为它分配1字节的内存。试想。若,不这样做,那2个类A的实例在内存中将会无法区分。

。。

43.假设Class A中定义并实现虚函数int func(void),Class B中也实现该函数,

那么

  1. A a;
  2. a->func()

将调用哪个类里面的函数?假设int func(void)不是虚函数,情况又怎样?为什么?

【參考答案】第一问调用的是B的。第二问调用A的。虚函数的一个典型应用,虚函数仅仅能借助于指针或者引用来达到多态的效果。

44.C++里面是不是全部的动作都是main()引起的?假设不是,请举例。

【參考答案】比方全局变量的初始化,就不是由main函数引起的。举例:

  1. class   A{};
  2. A   a;   //a的构造函数限运行
  3. int   main() {}

45. 内联函数在编译时是否做參数类型检查

【參考答案】内联函数要做參数类型检查,   这是内联函数跟宏相比的优势。

46.请讲一讲析构函数和虚函数的使用方法和作用? 

【參考答案】

析构函数是特殊的类成员函数,它没有返回类型,没有參数,不能任意调用。也没有重载,仅仅有在类对象的生命期结束的时候。由系统自己主动调用。 有适放内存空间的作用。

虚函数是C++多态的一种表现, 使用虚函数。我们能够灵活的进行动态绑定,当然是以一定的开销为代价。

假设一个类是作为基类存在的,一定要声明一个虚析构函数,否则删除动态分配的子类实例时会出现"局部删除",造成内存泄露和未知错误

47.“new”in c++ is a:

A. library function like malloc in c

B. key word

C. operator

D. none of the above

【參考答案】C。malloc是库函数,不在编译器控制范围之内;new是运算符,在编译器控制范围之内。   调用malloc时。从堆中申请内存;调用new时,从堆中申请内存并为内存调用构造函数。

48.对于C++中类(class) 与结构(struct)的描写叙述正确的为:

A,类中的成员默认是private的,当是能够声明public,private 和protected,结构中定义的成员默认的都是public;

B,结构中不同意定义成员函数,当是类中能够定义成员函数;

C,结构实例使用malloc() 动态创建,类对象使用new 操作符动态分配内存;

D,结构和类对象都必须使用new 创建;

E,结构中不能够定义虚函数,当是类中能够定义虚函数.

F,结构不能够存在继承关系,当是类能够存在继承关系.

【标准答案】A,D

很多其它内容,參见C++经典面试题(一)

49.两个互相独立的类:ClassA 和 ClassB,都各自己定义了非静态的公有成员函数 PublicFunc() 和非静态的私有成员函数 PrivateFunc();如今要在ClassA 中添加定义一个成员函数ClassA::AdditionalPunction(ClassA
a,ClassB b);则能够在AdditionalPunction(ClassAx,ClassB y)的实现部分(函数功能体内部)出现的合法的表达是最全的是: 

A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();

B,x.PrivateFunc();x.PublicFunc();y.PublicFunc();

C,x.PrivateFunc();y.PrivateFunc();y.PublicFunc();

D,x.PublicFunc();y.PublicFunc();

【标准答案】B

(主要考察private和public的作用,private下的成员变量和成员函数仅仅能由类本身的成员变量和函数訪问,子类不行、其他类更不行)

50.C++程序下列说法正确的有:

A,对调用的虚函数和模板类都进行迟后编译.

B,基类与子类中函数假设要构成虚函数,除了要求在基类中用virtual 声明,并且必须名字同样且參数类型同样返回类型同样。

C,重载的类成员函数都必需要:或者返回类型不同,或者參数数目不同,或者參数序列的类型不同.

D,静态成员函数和内联函数不能是虚函数,友员函数和构造函数也不能是虚函数,可是析构函数能够是虚函数.

【标准答案】A

这道题查了不少资料了。各种说法都有,说下我的理解吧,

首先。没有继承性的函数都不能是虚函数,由于这样毫无意义。所以,普通函数是不能作为虚函数存在的。

A中。虚函数是动态联编的,但模板类是在编译期间就确定的,迟后编译应该也是动态联编,这样A应该是错的?!

B中,假设基类中声明一个虚函数。子类函数和基类函数的名字、參数类型、返回类型有任一不同,都将会生成一个新的函数。

这样看来。B应该是正确的。

C中,切记,重载的函数之间的不同,不包含返回类型!

D中,静态函数在类中仅仅有一份,被全部对象共享,不存在多态性。自然不能是虚函数;

内联函数在编译时直接展开。自然也不能是虚函数;

友元函数不是类的成员函数。不能被继承,故而也不能被声明为虚函数;

构造函数不可以被继承,不能是虚函数,而且,构造函数是用来运行初始化的。虚函数是用来实现多态性的。若尚未构造出来。怎样实现多态?。显然行不通。

my_adu

C++面试必备,概念解析的更多相关文章

  1. AI面试必备/深度学习100问1-50题答案解析

    AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习   转载:https://blog.csdn.net ...

  2. 面试必备:ArrayList源码解析(JDK8)

    面试必备:ArrayList源码解析(JDK8) https://blog.csdn.net/zxt0601/article/details/77281231 概述很久没有写博客了,准确的说17年以来 ...

  3. Java常用英语汇总(面试必备)

    Java常用英语汇总(面试必备) abstract (关键字)             抽象 ['.bstr.kt] access                            vt.访问,存 ...

  4. 李洪强iOS经典面试题156 - Runtime详解(面试必备)

    李洪强iOS经典面试题156 - Runtime详解(面试必备)   一.runtime简介 RunTime简称运行时.OC就是运行时机制,也就是在运行时候的一些机制,其中最主要的是消息机制. 对于C ...

  5. 【面试必备】常见Java面试题大综合

    一.Java基础 1.Arrays.sort实现原理和Collections.sort实现原理答:Collections.sort方法底层会调用Arrays.sort方法,底层实现都是TimeSort ...

  6. 面试必备的10道MySQL题

    MySQL 事务,是我们去面试中高级开发经常会被问到的问题,很多人虽然经常使用 MySQL,SQL 语句也写得很溜,但是面试的时候,被问到这些问题,总是不知从何说起.下面我们先来了解一下什么是 MyS ...

  7. [转帖]MySQL的又一神器-锁,MySQL面试必备

    MySQL的又一神器-锁,MySQL面试必备 https://segmentfault.com/a/1190000020762791 lock 低一级的是 latch   原文链接:blog.ouya ...

  8. 分享一套主流框架源码资料,征服阿里 P7 面试必备!

    2019年已经过完一半了, 我在这里为大家准备了一份资料,征服阿里 P7 面试必备! 希望这些资料可以帮助到大家,从一个码农进阶为一个优秀的程序员,也可以帮大家提升系统实战能力. 这些资料包括: 讲解 ...

  9. Java1.7的HashMap源码分析-面试必备技能

    HashMap是现在用的最多的map,HashMap的源码可以说是面试必备技能,今天我们试着分析一下jdk1.7下的源码. 先说结论:数组加链表 一.先看整体的数据结构 首先我们注意到数据是存放在一个 ...

  10. 2020Android面试重难点之Handler机制,含字节、京东、腾讯经典面试真题解析!

    Handler 在整个 Android 开发体系中占据着很重要的地位,对开发者来说起到的作用很明确,就是为了实现线程切换或者是执行延时任务,稍微更高级一点的用法可能是为了保证多个任务在执行时的有序性. ...

随机推荐

  1. 104.virtual虚函数多态与异构数据结构

    #include "mainwindow.h" #include <QApplication> #include <list> #include <Q ...

  2. Oracle 导入导出 创建用户等

    localhost:1158/emD:\app\Administrator\product\11.2.0\dbhome_1\bin\imp.exe log  path  E:\app\Administ ...

  3. 分享一个js对象开发组件写法

    var TextCount = (function(){ //私有方法,外面将访问不到 var _bind = function(that){ that.input.on('keyup',functi ...

  4. PHP高手进阶-LAMPer技能树

  5. js中迭代的常用几种方法

    var arr = [1,3,2,5,3]; //forEach 两个参数,第一个为数组内容,第二个为数组下标arr.forEach(function(item,index) { console.lo ...

  6. BZOJ2137: submultiple(生成函数,二项式定理)

    Description 设函数g(N)表示N的约数个数.现在给出一个数M,求出所有M的约数x的g(x)的K次方和. Input 第一行输入N,K.N表示M由前N小的素数组成.接下来N行,第i+1行有一 ...

  7. ios程序启动过程和UIWidnow介绍

    一.iOS程序的完整启动过程(有storyboard) 1.先执行main函数,main内部会调用UIApplicationMain函数 2.UIApplicationMain函数里面做了什么事情: ...

  8. ios in-house 公布整个过程(startssl认证)

    首先大体说一下步骤: 1.申请苹果enterprise 账号 为应用生成app id,provision profile等 详见:http://www.th7.cn/Program/IOS/20131 ...

  9. [ Java ] [ Spring ] [ Spring MVC ] Tutorial

    中文 Spring 教學 http://hatemegalaxy.blogspot.tw/2014/09/spring-framework-useful-tutorials-for.html 英文 S ...

  10. C#开发 —— 异常处理

    System.ArithmeticException 在算术运行期间发生异常 System.ArrayTypeMismatchException 存储元素的实际类型与数组的实际类型不兼容而导致存储失败 ...