还剩44页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
重要面试是软件工程师,但愿对人们有所协助C/C++一语言某些C.问在嵌入式开发中,为什么能通过语言去直接操作硬件?1C答由于有指针,指针是语言灵魂,她可以直接访内存C.问链表作用?2答用于内存管理,链表节点中指针域可以将不持续内存彼此关联起来,从而实现内存动态管理.问什么变量不能用指针指向?3答:寄存器变量修饰,由于这个变量会优先选取存储到寄存器中,而指针只能register CPU指向内存任务区域,但不能指向寄存器.问有符号字符型和无符号字符型变量最大值和最小值分别是多少十六进制多少,为什么?4------------------------------答有符号;无符号T28127,-0x800x7F0255,0OxFF.局部变量能否和全局变量重名?5答能,局部会屏蔽全局全局变量和局部变量区别
6.全局变量,储存在静态区.进入函数之前就被创立.生命周期为整个源程序main局部变量,在栈中分派.在函数被调用时才被创立.生命周期为函数内.、头文献中干什么用7ifndef/define/endif数据从管道一端写入,从另一端读出
4.没有名字
5.管道缓冲区是有限
6.管道所传送数据是无格式,这规定管道读出方与写入方必要事先商定好数据格式,如多少
7.字节算一种消息等写入管道数据读完之后就从管道中消失
8.、问管道与消息队列区别?9答管道和无名管道收发数据都是先进先出,消息队列可以实现按消息类型随机读取、问有名管道相比无名管道最大长处是什么?5答实现不同信号之间互相通信、问什么是信号量,有什么特点,简述操作?6pv答信号量就是个计数器,计数器值只能是非负操作计数器办法是操作,操作具备原子性(不可中断),要执行就一定要执行成功,要PV pv么就不执行操作使信号量值减一P当进行带阻塞操作时候,如果信号量值已经是了,操作就会阻塞P0P操作使得信号量值加一V死锁四个条件及解决办法
7.(进程死锁因素资源竞争及进程推动顺序非法)()互斥条件一种资源每次只能被一种进程使用1⑵祈求与保持条件一种进程因祈求资源而阻塞时,对已获得资源保持不放不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺3循环等待条件:若干进程之间形成一种头尾相接循环等待资源关系4解决死锁办法分为死锁防止,避免,检测与恢复四种、问什么是进程?什么是线程,它们之间关系?实现多任务优缺陷?8答进程是系统资源分派基本单位,拥有独立资源分派线程是调度和分派基本单位cpu关系一种进程中可以有各种线程,线程必要依赖于进程存在,如果进程结束了,线程也就不存在了1::每个进程都至少有一种线程,称为主线程2多任务优缺陷进程长处父子进程资源独享缺陷资源开销比较大,子进程完全复制父进程地址空间,父子进程共享数据不以便线程长处资源开销比较小,共享数据比较方缺陷资源共享,各种线程共享资源比较麻烦什么是〃进程?在咱们程序中如何防止〃进程?试说出其中三种办法僵尸n..“zombie zombie”进程一种已经终结,但其父进程没有对其进行解决子进程称为僵尸进程防止僵尸进程)用()等待子进程返回.1waitpid wait)两次也可以实现2fork.系统调用与库函数关系12并不是所有系统调用都被封装成库函数,系统提供许多功能都必要通过系统调用才干完毕进程同步机制,并比较优缺陷
13.进程同步是进程之间直接互相作用进程互斥是进程之间发生一种间接性作用,普通是程序不但愿.原则提供三种类型缓冲14I/O全缓冲、行缓冲、不带缓冲内核有几种锁,它们有什么不同?
12.linux内核锁重要是自旋锁和信号量Linux自旋锁最多只能被一种可执行线程持有,如果一种执行线程试图祈求一种已被争用(已经被持有)自旋锁,那么这个线程就会始终进行忙循环——旋转一等待锁重新可用要是锁未被争用,祈求它执行线程便能立即得到它并且继续进行自旋锁可以在任何时刻防止多于一种执行线程同步进入临界区中信号量是一种睡眠锁如果有一种任务试图获得一种已被持有信号量时,信号量会Linux将其推入等待队列,然后让其睡眠这时解决器获得自由去执行其他代码当持有信号量进程将信号量释放后,在等待队列中一种任务将被唤醒,从而便可以获得这个信号量信号量睡眠特性,使得信号量合用于锁会被长时间持有状况;只能在进程上下文中使用,由于中断上下文中是不能被调度;此外当代码持有信号量时,不可以再持有自旋锁.请阐明中动态链接库和静态链接库区别?13C++答动态链接是指在生成可执行文献时不将所有程序用到函数链接到一种文献,当程序运营时直接从a操作系统中找,动态链接是只建立一种引用接口,而真正代码和数据存储在此外可执行模块中,在运营时再装入;静态链接就是把所有用到函数所有链接到文献中,所有代码和数据都复制到本模块中,运营b exe时就不再需要库了.请阐明调用动态链接库种方式?14DLL2答载入时动态链接模块非常明确调用某个导出函数,使得她们就像本a load-time dynamiclinking,地函数同样这需要链接时链接那些函数所在导入库,导入库向系统提供了载入时所需DLL DLL信息及函数定位DLL运营时动态链接运营时可以通过或函数b run-time dynamiclinking,LoadLibrary LoadLibraryEx载入载入后,模块可以通过调用获取函数出口地址,然后就可以DLL DLLGetProcAddress DLLO通过返回函数指针调用函数了如此即可避免导入库文献DLLTo、请阐明在程序中使用线程好处是什么?15答耗时操作使用线程,提高应用程序响应a并行操作时使用线程,如架构服务器端并发线程响应顾客祈求b C/S多系统中,使用线程提高运用率c CPUCPU改进程序构造一种既长又复杂进程可以考虑分为各种线程,成为几种独立或半独立运营某些,d这样程序会利于理解和修改.顾客进程间通信重要哪几种方式?16管道管道可用于具备亲缘关系进程间通信,容许一种进程和另一种与它有共同祖先进1Pipe:程之间进行通信命名管道:命名管道克服了管道没有名字限制,因而,除具备管道所具备功能外,2named pipe它还容许无亲缘关系进程间通信命名管道在文献系统中有相应文献名命名管道通过命令mkfifo或系统调用来创立mkfifo信号操作控制信号,实现信号同步互斥3Signal:pv消息队列消息队列是消息链接表,涉及消息队列消息队列有4MessagePosix systemV足够权限进程可以向队列中添加消息,被赋予读权限进程则可以读走队列中消息消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺()共享内存使得各种进程可以访问同一块内存空间,是最快可用形式是针对其5IPC她通信机制运营效率较低而设计往往与其他通信机制,如信号量结合使用,来达到进程间同步及互斥()信号量():通过信号解决器控制同步与互斥6semaphore()套接字():更为普通进程间通信机制,可用于不同机器之间进程间通信7Socket
三、网络编程
1.TCP/IP(传播控制合同)中TCP和IP(网际合同)分别承担什么责任?负责你应用软件(例如你浏览器)和你网络软件之间通讯TCP负责与其她计算机通讯(发送主机地址+接受主机地址)IP ipip负责在数据被发送此前把它分装到包,然后在数据接受后来再组装起来TCP IP负责把数据包发送到对的目的计算机IP例题在模型中进程到进程之间通信属于(传播)层,主机到主机属于(网络)层,设备1:tcp/ip到设备属于(数据链路)层,程序到程序属于(应用)层四层模型?七层模型?合同涉及?
2.TCP/IP这层是:应用层,表达层、会话层,传出层()网络层()数据链路层(互7udp/tcp,IP,换机),物理层(集成线())hub这层分别为应用层传播层网络层链路层4合同族涉及()、()、()()、()、()、、()、TCP/IP IPARP ICMPUDP TCPRIP TelnetSMTPDNS等合同.请简述、活动目录、域概念3DNS参照答案域名服务,作用是将网络域名解析成地址;DNS:IP域网络系统一种安全边界,在一种域当中,计算机和顾客共享某些列安全信息.问:函数作用4select答用于一种进程同步监听各种文献描述符,还可以设立监听超时时间.问:、、合同分别位于合同哪一层?5tcp udpip http telnet TCP/IP答、位于传播层//说出分别相应七层中哪一层传播层,网络层tcp udpTCP/IP OSI合同位于网络层Ip及位于应用层httptelnet.问路由器工作在合同中那一层?6TCP/IP答网络层.端口作用?7端口是一种软件构造,一种端口相应一种比特数服务进程普通使用一种固定端口16端口标记通信进程作用、区别系统里多进程1被客户程序或服务进程用来发送和接受
2.信息端标语分类知名端标语号非配给号端口分派给IANA:21ftp80http动态端标语、网络通信过程?
8、面向无连接需携带地址邮政系统服务抽象
1、面向连接无需地址,本质上连接是一种管道(电话系统服务模式抽象)2o.物理地址转换成地址合同?反之?8IP(物理转)(转物理)RARP IPARP IP层通信合同有哪些?
9.MACIS02110,IEEE802,IEEE
802.2网卡是由组什么构成MAC6有进制数据构成,前三组表达厂商,有来分派,并可以在细分,后三组表达该制造416IEEE商所制造某个网络产品(如网卡)系列号.对理解10WLAN是指应用无线通信技术将计算机设备互联起来,构成可以互相通信和实现资源共享网络WLAN体系无线局域网本质特点是不再使用通信电缆将计算机与网络连接起来,而是通过无线方式连接,从而使网络构建和终端移动更加灵活.问什么是合同与合同(提供进程间通信能力)?她们区别及优缺陷?12tcp udp答面向连接,可靠传播层合同tcp面向连接建立连接一>使用连接一〉释放连接(虚电路)可靠性对包进行排序并检错,而损坏包可以重传数据包包括序号和确认序号tcp窗口式流量控制、慢启动和拥塞避免(服务对象等)telnet,ftp,Rlogin,STMP无连接,不可靠传播层通信合同udp面向无连接发送数据之前不需要建立连接不可靠不对数据包顺序进行检查没有错误检测和重传机制服务对象重要用于那些面向查询一一应答服务((网络文献系统)(网络时间合同)NFS/NTP(域名解析合同))/DNS.问地址属于什么(地址主机和子网主机全为13ip
192.
168.
220.22IP IPID ID,1D Oip地址表达网段地址,主机全为地址广播地址)ID1答私有地址IP.问什么是大端什么是小端字节序?网络字节序是大端还是小端?14答小端低地址存储低字节,高地址存储高字节;大端相反;网络字节序是大端网络中,如果客户端突然掉线或者重启,服务器端怎么样才干立即懂得?
15.若客户端掉线或者重新启动,服务器端会收到复位信号.腾讯笔试题:三次握手过程,发生在三次握手哪个阶段?16tcp accept发生在三次握手之后accept第一次握手客户端发送包到服务器syn syn=j第二次握手服务器收到包,必要确认客户同步自己也发送一种包syn SYNack=j+1,ASK ask=k第三次握手客户端收到服务器包向服务器发送确认包SYN+ACK ACKack=k+1三次握手完毕后,客户端和服务器就建立了连接这时可以调用函数获得此连接tcp accept面向连接四次挥手过程tcp1第一次挥手Client发送一种FIN,用来关闭Client到Server数据传送,Client进入FIN_WAIT1状态2第二次挥手Server收到FIN后,发送一种ACK给Client,确认序号为收到序号+1与SYN相似,一种FIN占用一种序号,Server进入CLOSE_WAIT状态3第三次挥手Server发送一种FIN,用来关闭Server到Client数据传送,Server进入LAST ACK状态4第四次挥手Client收到FIN后,Client进入TIME_WAIT状态,接着发送一种ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完毕四次挥手2为什么建立连接是三次握手,而关闭连接却是四次挥手呢?这是由于服务端在LISTEN状态下,收到建立连接祈求SYN报文后,把ACK和SYN放在一种报文里发送给客户端而关闭连接时,当收到对方FIN报文时,仅仅表达对方不再发送数据了但是还能接受数据,己方也未必所有数据都发送给对方了,因此己方可以及时close,也可以发送某些数据给对方后,再发送FIN报文给对方来表达批准当前关闭连接,因而,己方ACK和FIN普通都会分开发送、腾讯笔试题用合同通讯时如何得知目的机与否获得了数据包17UDP可以在每个数据包中插入一种唯一例如或者递增ID,timestamp int发送方在发送数据时将此和发送时间记录在本地ID防止重复包括、和/z n有什么区别?8#include filename.h#include filename.h告诉预解决器在原则系统目录中寻找文献ttinclude filename.h::〃〃告诉预解决器先在当前目录中寻找文献,找不到则再在ttinclude filename,h原则目录下寻找文献、有什么用途请至少阐明两种9const定义常量1const可以修饰函数参数、返回值,甚至函数定义体2const被修饰东西都受到强制保护,可以防止意外变动,能提高程序健壮性const〃指向常整形数指针变量〃指针所指向内容不能变,指针指向地址可变和const char*pl=name;const char*p;//char const*p〃指向整形数常指针〃地址不可变内容可变char*const p2=name;〃指向常量常指针〃地址不变,内容不变const char*const name=chen;数组与链表区别
10.数组中数据在内存是顺序存储,插入需要移动诸多值由于链表是随机存储,链表访问需要遍历接受方在收到数据后将再发给发送方作为回应ID理解路由(网络层)可以分割子网,广播域,提供防火墙功能互换机(数据链路层)根据地址进行寻址mac
18、在子网
210.
27.
48.21/30种有多少个可用地址?分别是什么?可用地址是两个,一种网段地址,一种广播地址、从编程究竟层以太网物理包要通过哪几次封装?19SOCKET包、包、以太网包SOCKET IP.列出个惯用网络合同使用端口203答合同用端口,合同用端口,合同用端口HTTP80FTP21POP3110与(类具备共性实体抽象)C++QT程序入口是哪里写出消息机制流程
3.Windows Windows答程序入口是函数Windows WinMain消息机制系统将会维护一种或各种消息队列,所有产生消息都会被放入或是插入队列中系统会在队列中取出每一条消息,依照消息接受句柄而将该消息发送给拥有该窗口程序消息循环每一种运营程序均有自己消息循环,在循环中得到属于自己消息并依照接受窗口句柄调用相应窗口过程而在没有消息时消息循环就将控制权交给系统.面向对象三个基本特性,并简朴论述之?1答)封装将客观事物抽象成类,每个类对自身数据和办法实行(1protection private,)protected,public)继承实现继承(指使用基类属性和办法而无需额外编码能力)、可视继承(子窗体使2用父窗体外观和实当代码)、接口继承(仅使用属性和办法,实现滞后到子类实现))多态容许将子类类型指针赋值给父类类型指针3().多态作用?1答重要是两个:)隐藏实现细节,使得代码模块化1)类继承与派生时候,接口重用
2.重载()和重写(有书也叫做覆盖)区别2overload overried,答从定义上来说重载是指容许存在各种同名函数,而这些函数参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)重写是指子类重新定义复类虚函数办法从实现原理上来说重载编译器依照函数不同参数表,对同名函数名称做修饰,然后这些同名函数就成了不同函数重写当子类重新定义了父类虚函数后,父类指针依照赋给它不同子类指针,动态调用属于子类该函数,这样函数调用在编译..间是无法拟定(调用子类虚函数地址无法给出)
3.使用new与malloc分派内存有什么区别?是中操作符,是中一种函数I.new C++malloc c、不止是分派内存,并且会调用类构造函数,同理会调用类析构函数,而则只2new deletemalloc分派内存,不会进行初始化类成员工作,同样也不会调用析构函数free、内存泄漏对于或者都可以检查出来,区别在于可以指明是那个文献那一行,3malloc newnew而没有这些信息malloc和效率比较
4.new malloc可以以为是加构造函数执行new malloc出来指针是直接带类型信息new而返回都是指针malloc void中,核心字和区别仅仅在于
5.C++struct class定义类缺省成员为公有,而定义类缺省成员为私有;struct class函数中值传递方式有哪几种?
6.C++答函数三种传递方式为值传递、指针传递和引用传递C++、构造函数可以是虚函数吗?为什么?7答不可以,创立对象时必要拟定类型、析构函数可以是虚函数吗?为什么?答可以释放指向子类基类指针时,不会导致内存泄露8默认析构函数不是虚,当类中至少有一种虚函数时,需要虚析构函数、语言中核心字作用是什么?9C++static答在函数体内,一种被声明为静态变量在这函数被调用过程中维持其值不变在模块内(但在函数体外),一种被声明为静态变量可以被模块内所有函数访问,但不能被模块外其她函数所问在模块内,一种被声明为静态函数只可被这一模块内其他函数调用那就是,这个函数被限制在声明它模块本地范畴内使用、面向对象程序设计思想是什么?10答把数据构造和对数据构造进行操作办法封装形成一种个对象.什么是类?11答把某些具备共性对象归类后形成一种集合,也就是类.对象都具备两方面特性是什么?分别是什么?12答对象具备特性是静态特性与动态特性静态特性是只能描述对象属性(成员变量),动态属性是指对象体现出来行为(成员函数).在头文献中进行声明,在相应实现文献中进行类定义有什么意义13答这样可以提高编译效率只要编译一次相应文献后,再次应用该类地方,这样类就无法再次Qbj编译,从而提高编译效率、在类内部定义成员函数函数体,这种函数会具备那种属性?14答这种函数会自动为内联函数,这种函数在函数调用地方在编译阶段都会进行代码替代成员函数通过什么来区别不同对象成员数据?为什么它可以区别?
15.答通过指针指向对象首地址来区别this编译器自动为类产生四个缺省函数是什么?
16.C++答默认构造函数,拷贝构造函数,析构函数,赋值函数构造函数与普通函数相比在形式上有什么不同?(构造函数作用,它声明形式来分析)
18.答构造函数是类一种特殊成员函数,普通状况下,它是专门用来初始化对象成员变量构造函数名字必要与类名相似,它不具备任何类型,不返回任]可值、.什么时候必要重写拷贝构造函数?19答当构造函数涉及到动态存储分派空间时,要自己写拷贝构造函数,并且要深拷贝构造函数调用顺序是什么?
20..先调用基类构造函数
1.按声明顺序初始化数据成员
2.最后调用自己构造函数3哪几种状况必要用到初始化成员列表?
21.答类成员是常量成员初始化;类成员是对象成员初始化,而该对象没有无参构造函数类成员为引用时.什么是常对象?22答常对象是指在任]可场合都不能对其成员值进行修改对象.静态函数存在乎义?23静态私有成员在类外不能被访问,可通过类静态成员函数来访问;当类构造函数是私有时,不像普通类那样实例化自己只能通过静态成员函数来调用构造函数.在类外有什么办法可以访问类非公有成员?24答友元,继承,公有成员函数.什么叫抽象类?25答不用来定义对象而只作为一种基本类型用作继承类运算符重载意义?
26.答为了对顾客自定义数据类型数据操作与内定义数据类型数据操作形式一致、不容许重载个运算符是哪些?275答.*(成员指针访问运算符号)
1.::域运算符
2.长度运算符号
3.Sizeof:条件运算符号
4.(成员访问符)
5..、运算符重载三种方式?28答普通函数,友元函数,类成员函数、流运算符为什么不能通过类成员函数重载?普通怎么解决?29答由于通过类成员函数重载必要是运算符第一种是自己而对流运算重载规定第一种参数是流对象因此普通通过友元来解决、赋值运算符和拷贝构造函数区别与联系?30答相似点都是将一种对象到另一种中去copy不同点拷贝构造函数涉及到要新建立一种对象拷贝构造函数:complex A100;example B=A;拷贝构造函数在哪几种状况下会被调用?
31.答:.当类一种对象去初始化该类另一种对象时;1如果函数形参是类对象,调用函数进行形参和实参结合时;32如果函数返回值是类对象,函数调用完毕返回时
33.对象间是如何实现数据共享32答通过类静态成员变量来实现对象间数据共享静态成员变量占有自己独立空间不为某个对象所私有友元关系有什么特性?(类外部访问类私有成员)
33.答单向,非传递,不能继承.内联函数和宏区别在于34宏是由预解决器对宏进行代替,而内联函数是通过编译器控制来实现构造与联合有和区别?
35.构造和联合都是由各种不同数据类型成员构成,但在任何同一时刻,联合中只存储了一种被选
1.中成员(所有成员共用一块地址空间),而构造所有成员都存在(不同成员存储地址不同)对于联合不同成员赋值,将会对其他成员重写,本来成员值就不存在了,而对于构造不同成员
2.赋值是互不影响.用什么函数启动新进程、线程(分)364答()创立进程;CreateProccess()创立线程CreateThread中还提供了与函数创立线程MFC_beginthread_beginthreadex中和区另!]MFC SendMessagePostMessage答和区别重要在于与否等待应用程序做出消息解决PostMessage SendMessage只是把消息放入队列,然后继续执行;PostMessage而必要等待应用程序解决消息后才返回继续执行SendMessage这两个函数返回值也不同,返回值表达函数执行与否对的,PostMessage PostMessage而返回值表达其她程序解决消息后返回值SendMessage中,大某些类是从哪个类继承而来
38.MFC(、、、)(分)_CCmdTarget CObjectCWinApp CWnd2CObject有何作用;
39.WaitForSingleObject类型是时,(m_pThrd CWinThread*WaitForSingleObject m_pThrd-m_hThread,)有何作用(分)INFINITE;4答是表达等待线程一种函数参数为表达始终等待线程WaitForSingleObject INFINITE执行结束后,再继续解决自身程序CWinThread、、在什么方面有所不同(分)
6._stdcall_cdecl_pascal4答这些都是某些函数参数调用商定,告诉编译器函数参数压栈顺序,以及压入堆栈内容由谁来清除,是调用者还是函数自身清除堆栈内容简朴列表如下、内存分派
11、栈区()一由编译器自动分派释放,存储函数参数值,局部变量值等其操作1stack方式类似于数据构造中栈.堆区()一普通由程序员分派释放,若程序员不释放,程序结束时也许由2heap OS回收注意它与数据构造中堆是两回事,分派方式倒是类似于链表,呵呵.全局区(静态区)()——全局变量和静态变量存储是放在一块,初始化全局变量和静3static态变量在一块区域,未初始化全局变量和未初始化静态变量在相邻另一块区域-程序结束后有系统释放文字常量区一常量字符串就是放在这里程序结束后由系统释放
4..程序代码区一存储函数体二进制代码5和()区别
12.sizeof strlen参照答案
①是运算符,计算数据所占内存空间;()是一种函数,计算字符数组字符数;sizeof strlen
②可以用类型作参数;()只能用作参数,必要是以‘/O,结束sizeof strlenchar*
③数组做参数不退化,传递给就退化为指针了;sizeof strlen
④操作符成果类型是它在头文献中为类型该类型保证能容纳sizeof size_t,typedef unsignedint实现建立最大对象字节大小.在程序中调用被编译器编译后函数,为什么要加13C++C externC DirectiveParameter orderClean-up Passesparameters inregisterspascal Left-to-right RoutineNocdecl Right-to-left CallerNostdcall Right-to-left RoutineNo.为什么要使用命名空间?1解决命名冲突问题定义类名称以及不同厂商内联函数和宏区别
2.宏是由预解决器对宏进行代替,而内联函数是通过编译器控制来实现()
3.void funcint x,int y=40,int z=49;//只能在声明时设立默认参数缺省参数都必要是从右到左定义,使用时却是从左到右.只要函数参数类型不同,或者参数个数不同,或者两者兼而有之,两个或两个以上函数4可以使用相似函数名
5.引用与指针有什么区别?)引用必要被初始化,指针不必1)引用初始化后来不能被变化,指针可以变化所指对象2)不存在指向空值引用,但是存在指向空值指针
2.构造与类区别6默认访问权限不同默认;struct public默以为;class private数据成员可以是任何类型,但是不能用auto,register,extern0调用析构函数条件
4..对象自动退出生命周期.程序员手动释放对象指针12与区别
5.delete delete[]只会调用一次析构函数,而会调用每一种成员析构函数delete delete[]、虚函数作用?6接口重用构2造函数可以是虚函数吗?为什么?答不可以,创立对象时必要拟1类AlZ,XE型从内存分派,虚函数用处等方面来讲都可以折构函数可以是虚函3吗?为什么?答可以释放指向子类基类指针时,不会导致内存泄,=!=,足各默认析构函数不是虚,当类中至少有一种虚函数时,需要虚析构函数
7.MFC中CString是类型安全类么?答不是,其他数据类型转换到CString可以使用CString成员函数Format来转学习QT、问区别于其他应用开发工具备什么长处及缺陷?1QT答、有很强移植性;1开源开发工具;
2.用语言实现,效率相对于其他面向对象语言执行效率更
3.C++高;、强大通信机制(信号和槽,比回调好);4MFC.支持可得到更加完美效果5openGL2D/3D、问你怎么理解是一门语言吗?2QT,QT答是一套应用程序开发框架,也叫做是开发工具或一套图形库,用语言来实现QT,C++、问中信号和槽重要作用是什么?3QT答重要用来在对象间进行通信、问中对事件解决是通过什么办法实现?4QT答通过虚函数办法,重新实现相应事件函数、问面向对象设计与面向过程设计最大区别是什么?5答:面向对象设计中,程序是由一种或各种对象构成,每个对象负责不同任务,一起让整个应用程序运营起来,每一种对象又是由不同类实现,使得程序模块化更强而面向过程设计,就是程序从头到尾执行一种过程,需要自己去划分模块五平台与驱动某些、问:在嵌入式系统中处在什么地位?重要作用是什么1Bootloader bootloader答:是系统加电后、内核运营之前执行一段代码,处在嵌入式系统最底Bootloader层重要作用有两个
一、为启动内核准备好对的软硬件环境,软件重要指堆、栈等,Bootloader硬件重要指内存、系统时钟等,最后将内核由固态存储器加载到内存中;二是为更新、备份、恢复系统提供控制平台配备与编译过程u-boot配备:例如运营名字u-boot make_config调用脚本文献mkconfig、问简述两种启动方式异同?2s3c2440NAND/NOR答启动Nor系统加电后会从开始三总线位置读取第一条指令进行工作,采用总线构造,0x000000norFLASH可以直接连在三总线位置上,因此将烧到位置上,系统加电0x00000bootloader norflash0x0000后即可运营第一条代码,单片机普通采用此种启动方式bootloader长处硬件连接简朴、可靠缺陷由于构造因素,容量普通做不了太大,并且其读写速度也较慢nor flash启动Nand由于不支持总线线性寻址,因此会从自动拷代码到内部并从nand CPUnand4K RAM,这段开发运营程序,因此这代码往往是第一阶段代码,其作用为将RAM4k bootloader重要某些搬到内存中运营,然后进行后续工作bootloadr长处此方案充分运用了大容量存储、高速运营特点,解决了嵌入式系统存储与运营nand sdram容量与速度问题缺陷中间包括了多次搬运过程,效率稍稍有些低、问为什么大多由两阶段启动构成?以你熟悉3bootloader bootloader为例解说一下两阶段分别干什么事情?答会直接对硬件进行操作,为了分离硬件有关性,普通有两bootloader bootloader某些代码构成,第一某些普通由汇编完毕,完毕与体系构造有关代码、功能实现第二某些由语言完毕,完毕与系统机构无关通用功能实现C实际完毕重要任务〃引导内核,从拷贝到vivistagel flashsdram禁用看门狗、关闭所有中断、初始化系统时钟
1.设立和内存有关个寄存器
2.S3C241013初始化调试批示灯(可选)
3.初始化作为调试口(可选)
4.UART,从或复制代码至
5.NAND NORFLASH U SDRAM跳转到进入
6.main,stage2实际完毕重要任务〃启动内核vivistage2打印版本信息
1.stepl:初始化
2.step2:GPIO初始化
3.step3:MMU堆初始化
4.step4:设备初始化
5.step5:MTD存储私有参数
6.step6:vivi添加支持命令
7.step7:vivi依照顾客选取进入命令模式或启动内核
8.step8:vivi、问:内核由哪几某些构成,各自有什么作用?4Linux答进程管理管理中任务调度,例如多进程、多线程、信号、进程间通信等linux内存管理管理进程调度中随着内存分派与释放文献系统管理管理系统中存储设备,如盘、卡、硬盘等USDFLASH,设备管理管理系统中各种字符设备,如、触摸屏、串口、传感器等LCD网络管理管理系统中网络设备,为顾客提供各种网络服务、问简述模块编程含义及意义5Linux答中采用了模块机制,容许顾客将内核代码如驱动等编译成模块,而不是直接编译进Linux内核这样可以有效减小内核开发周期,减小最后内核体积,避免调试对内核影响,使得开发更bug加迅速、问:有哪几种常用根文献系统格式?简述其各自特点?6Linux答cramfs/Jffs2/yaffs/yaffs2/是专为嵌入式系统使用型闪存而设计一种日记型文献系统,其特yaffs/yaffs2NAND点是可读可写是创始人参加开发一种只读压缩文献系统cramfs LinuxLinus Torvalds在文献系统中,每一页被单独压缩,可以随机页访问,其压缩比高达为嵌入cramfs4KB2:1,式系统节约大量存储空间,使系统可通过更低容量存储相似文献,从而减少系Flash FLASH统成本文献系统最早是由瑞典公司基于内核为嵌入式系统JFFS AxisCommunications Linux
2.0开发文献系统重耍用于型闪存,基于驱动层JFFS NORMTD、问简述服务器与程序通信过程?7boa CGI答通过把顾客祈求送到服务器,服务器接受顾客祈求并交给程序解决,Internet CGI程序把解决成果传送给服务器,服务器把成果送回到顾客CGI答可以重载,语言不可以被重载,函数提供了语言连接互换指定函数〃〃C++c C++c externc来解决名字问题.头文献作用是什么?14答.通过头文献调用库1,实现安全检查2头文献中作用
15.ifndef/define/endif答防止头文献被重复引用如果一种头文献要被各种源文献同步如何避免对中变量重复定
16.HEADER#include,HEADER义?答在某个源文献中对变量定义,在中仅对变量进行声明,即前面加HEADER extern;.分别写出指针类型变量与零比较语句16BOOL,int,float a答BOOL:if!aor ifaint:ifa==0ora!=0float:const EPSSION
0.000001ifX=-EPSSIONX=EPSSION二二pointer:ifa!=NULL orifa NULL与#公股相比有何长处17const6s常量有数据类型,而宏常量没有数据类型编译器可以对前者进行类型安全检查•const而#招加只作简朴字符串替代,无类型安全检查、问同步与异步串行通信息区别?8答同步是通信息双方使用同一时钟线,而一但时钟线太长就容易受到干扰,如等等,因此惯用于短距离通信;而异步通信是双方使用各自时钟,如、等,SPI,12c uartUSB传播距离更远、问设备驱动框架中宏描述信息那一种是不能省略9答」〃〃;即是不能省MODULE ICENSEGPLGPL、问设备驱动开发中,惯用到声明函数,其作用是什么?10_init_exit答表达被修饰函数所占内存资源用完是可以回收.问驱动开发中用到各个寄存器地址,物理地址吗?如果不是那怎么得到虚拟地址?答11不是物理地址,是通过宏进行重映射ioremap
0.问驱动开发中,用于并发操作保护信号量和自旋锁有什么区别?12答:信号量是睡眠锁,等待期间不占用资源,但唤醒切换时很消耗时间,因此惯用于C PU使用不态频繁且阻塞时间较长地方;而自旋锁是忙等待,即会被调度,因此不能长时CPU间等待,用于等待时间比较短或频繁使用地方.问内核中工作队列是作什么用?13答用于某些函数需要延时解决地方,也惯用于中断下半部,从而缩短中断服务程序解决时间如何实现并发控制
1.
1.答用到锁和事务解决,做为一种事务应用程序访问一种表时,用锁对该表设立一种优先级,如果设立成功就进行下一步操作,不成功话就事务回滚,返回到最初状态,保证一种程序操作完数据库后,才容许其他程序操作驱动程序流程及功能
15.Linux设备驱动程序功能:对设备初始化和释放把数据从内核传送到硬件和从硬件读取数据读取应用程序传送给设备文献数据和回送应用程序祈求数据检测和解决设备浮现错误内核引导时,从文献中读取要加载文献系统
16.Linux/etc/fstab、什么是寄存器?17GPIO寄存器就是分派给地址GPIO cpuGPIO使用软件访问这些地址就可以访问相应硬件引脚分类上拉寄存器、控制寄存器、驱动寄存器、数据寄存器常用问题char a[]=hello;a
[0]=X;coutaendl;;〃注意指向常量字符串char*p=world p;//编译器不能发现该错误p
[0]=Xcoutpendl;常量字符串不能被修改注意当数组作为函数参数进行传递时,该数组自动退化为同类型指针void GetMemorychar*p char*GetMemoryvoid p=char*malloc100;char p[]=hello world”;return p;}void Testvoidvoid Test voidchar*str=NULL;char*str=NULL;GetMemorystr;str=GetMemory;strcpystr,hello world;〃〃,printf%s str;〃〃,printf%s str;}请问运营函数会有什么样成果Test请问运营函数会有什么样成果?Test答并没有指向新开辟内存空间,出段错误,strvoid Testvoid{访问了不该访问内存char*str=char*malloc100;strcpystr,hello”;void GetMemory2char**p,int numfreestr;{if str!=NULL二*p char*mallocnum;strcpystr,world;〃〃,printf%s str;voidTestvoid{char*str=NULL;GetMemorystr,100;strcpystr,hello;请问运营Test函数会有什么样成果?答打印出也有也许出段错误,由于访〃〃,world,printf%s str;问未知内存空间
四、关于内存思考题(这个题目见一次考一次)
五、编写类构造函数、析构函数和赋值函数已知类原型为:C++String StringclassString答打印出有也许存在内存泄露问题hello,public:普通构造函数String const char*str=NULL;////拷贝构造函数String const String feother;〜Stringvoid;//析构函数//赋值函数Stringoperate=constStringfeother;private://用于保存字符串char*m_data;;请编写上述个函数String4这个题目在尚米网络科技公司考过
六、编写函数strcpy已知函数原型是strcpychar*strcpychar*strDest,const char*strSrc;其中是目字符串,是源字符串strDest strSrc不调用字符串库函数,请编写函数1C++/C strcpychar*strcpychar*strDest,constchar*strSrc;分是个宏如果条件assert strDest!=NULLstrSrc!=NULL;//2assert为假整个程序将退出,可自己判断分char address=strDest;//2分while*strDest++=*strSrc++!=O//2return address;//2分}能把内容复制到为什么还要类型返回值?为了支持链式操作,即2strcpy strSrcstrDest,char*可以将函数返回值做为另一种函数参数如strcpystrDest,strcpystrDestl,strSrc;可以将到strSrc copystrDestl,strDest检查定类型,如实际是由于类型有效•const constfloat pi=
3.,pi
3.141593,float位限制在编译时分派存储空间;而#(万伯在预编译时编译,不分派存储空间const216有些集成化调试工具可以对进行调试,但不能对宏进行调试const.简述数组与指针区别18数组要么在静态存储区被创立(全局数组),要么在栈上被创立指针可以随时指向任意类型内存块.变量声明和定义有什么区别?19答声明变量不分派空间,定义变量要分派空间声明重要是告诉编译器,背面引用都按声明格式定义其实包括了声明意思,同步要分派内存空间.解释堆和栈区别20答堆()普通由程序员分派释放,若程序员不释放,程序结束时也许由回收heap——OS栈()由编译器自动分派释放,存储函数参数值,局部变量值等其操作方式类似于stack——数据构造中栈由系统自动分派,速度较快但程序员是无法控制注意它与数据构造中堆是两回事,分派方式倒是类似于链表速度比较慢,并且容易产生内存碎片,但是用起来最以便.一种指针可以是吗?21volatile可以,由于指针和普通变量同样,有时也有变化程序不可控性常用例子子中断服务子程序修改一种指向指针时,必要用buff volatile.内存分派方式分派方式有几种?22答)从静态存储区域分派内存在程序编译时候就已经分派好,这块内存在程序整个运营期间1都存在例如全局变量)在栈上创立在执行函数时,函数内局部变量存储单元都可以在栈上创立,函数执行结束2时这些存储单元自动被释放栈内存分派运算内置于解决器指令集中,效率很高,但是分派内存容量有限队堆上分派,亦称动态内存分派程序在运营时候用或申请任意多少内存,程序3mail new员自己负责在何时用或释放内存动态内存生存期由咱们决定,使用非常灵活,free delete但问题也最多函数模板与类模板有什么区别
1.
1.答函数模板实例化是由编译程序在解决函数调用时自动完毕,而类模板实例化必要由程序员在程序中显式地指定.嵌入式系统中经常要用到无限循环,你怎么样用编写死循环呢?24C答:whiaD{};loop:goto loop;.核心字作用是什么?(()用于全局变量;()用于局部变量;()用于25static123函数)在语言中,核心学有三个明显作用C static全局变量只初使化一次,防止在其她文献单元中被引用;static局部变量只被初始化一次,下一次根据上一次成果值;static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝;static.什么是预编译,何时需要预编译
26、总是使用不经常改动大型代码体
1、程序由各种模块构成,所有模块都使用一组原则包括文献和相似编译选项2在这种状况下,可以将所有包括文献预编译为一种预编译头、构造与联合有和区别?27构造和联合都是由各种不同数据类型成员构成,但在任何同一时刻,联合中只存储了一种1被选中成员(所有成员共用一块地址空间),而构造所有成员都存在(不同成员存储地址不同).对于联合不同成员赋值,将会对其他成员重写,本来成员值就不存在了,而对于构造不同成2员赋值是互不影响、简述什么是值传递,什么是地址传递,两者区别是什么?28参照答案值传递主调函数传递给被调函数是值拷贝,不是原值;地址传递主调函数传递给被调函数是值地址区别是值传递被调函数中操作不变化主调函数值,而地址传递则不同、比较和不同;30union struct在分派空间时,中各个域空间是重叠,中各个域空间是不重叠union struct操作系统内存分派普通有哪几种方式,各有什么优缺陷
31.定长和变长变长内存时比较灵活,但是易产生内存碎片定长灵活性差,但分派效率较高,不会产生内存碎片操作系统致命错误有哪些?
32.致命错误重要涉及启动配备错、内部资源耗尽和各种其他类型不可恢复性错误核心字在编译时有什么含义并给出三个不同使用场景例子(可以伪代码或者文字
32.volatile描述)用核心字定义变量,相称于告诉编译器,这个变量值会随时发生变化,每次使用时都volatile需要去内存里重新读取它值,并不要随意针对它作优化建议使用变量场合volatile()并行设备硬件寄存器1()一种中断服务子程序中会访问到非自动变量(全局变量)2()多线程应用中被几种任务共享变量3)中断(如键盘中断)与异常(如除零异常)有何区别?33interrupt,exception,异常解决器遇到编程失误,特殊状况时,必要内核解决(时钟同步执行)cpu中断外部硬件产生一种电信号,打断执行cpu与
34.malloc calloc直接申请空间,并不变化内存内容malloc:把内存区域空间写calloc:0;重新申请空间realloc:、操作系统致命错误有哪些?35致命错误重要涉及启动配备错、内部资源耗尽和各种其他类型不可恢复性错误.程序局部变量存在于(堆栈)中,全局变量存在于(静态区)中,动态申请数据存在36于(堆)中二系统编程、问什么是程序?什么是进程?本质区别?1答程序是某些指令有序集合进程是程序执行过程本质区别程序是静态,进程是动态、问无名管道为什么只能在具备公共祖先进程间通信?管道特点?2答管道无法打开,只可以通过继承办法获取文献描述符管道特点半双工特性,一种时间只能一种方向流通L.只在父子之间使用2,管道对于管道两端而言,只是一种文献,但是存储在内存中3。
个人认证
优秀文档
获得点赞 0