C++面试题二

专业题: 

1.线程的优好处与坏处,何时用线程最好,何时不用线程? html

什么时候使用多线程技术,什么时候避免用它,是咱们须要掌握的重要课题。多线程技术是一把双刃剑,在使用时须要充分考虑它的优缺点。程序员

多线程处理能够同时运行多个线程。因为多线程应用程序将程序划分红多个独立的任务,所以能够在如下方面显著提升性能: 
(1)多线程技术使程序的响应速度更快 ,由于用户界面能够在进行其它工做的同时一直处于活动状态;
(2)当前没有进行处理的任务时能够将处理器时间让给其它任务;
(3)占用大量处理时间的任务能够按期将处理器时间让给其它任务;
(4)能够随时中止任务;
(5)能够分别设置各个任务的优先级以优化性能。
 是否须要建立多个线程取决于各类因素。在如下状况下,最适合采用多线程处理: 
(1)耗时或大量占用处理器的任务阻塞用户界面操做;
(2)各个任务必须等待外部资源 (如远程文件或 Internet链接)。
一样的 ,多线程也存在许多缺点 ,在考虑多线程时须要进行充分的考虑。多线程的主要缺点包括: 
(1)等候使用共享资源时形成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。
(2)对线程进行管理要求额外的 CPU开销。线程的使用会给系统带来上下文切换的额外负担。当这种负担超过必定程度时,多线程的特色主要表如今其缺点上,好比用独立的线程来更新数组内每一个元素。
(3)线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。
(4)对公有变量的同时读或写。当多个线程须要对公有变量进行写操做时,后一个线程每每会修改掉前一个线程存放的数据,从而使前一个线程的参数被修改;另外 ,当公用变量的读写操做是非原子性时,在不一样的机器上,中断时间的不肯定性,会致使数据在一个线程内的操做产生错误,从而产生莫名其妙的错误,而这种错误是程序员没法预知的。

 [参考地址]http://www.cnblogs.com/lmjob/archive/2009/08/10/1542707.html面试

 

2. const char*, char const*, char*const的区别数组

 const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点以前是看过了,今天作Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,因而翻起来重嚼一下。
事实上这个概念谁都有只是三种声明方式很是类似:
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读。
char * const cp; ( * 读成 pointer to ) cp is a const pointer to char
const char * p; p is a pointer to const char;
char const * p; 同上由于C++里面没有const*的运算符,因此const只能属于前面的类型。
C++标准规定,const关键字放在类型或变量名以前等价的。
const int n=5; //same as below
int const m=10
结论:
char * const cp     : 定义一个指向字符的指针常数,即const指针
const char* p       : 定义一个指向字符常数的指针
char const* p       : 等同于const char* p
 
const   char   **是一个指向指针的指针,那个指针又指向一个字符串常量。   
       char   **也是一个指向指针的指针,那个指针又指向一个字符串变量。

 [参考地址] http://blog.163.com/pei_hua100/blog/static/805697592009550281616/多线程

相关文章
相关标签/搜索