
面试题
JeremyZJM
这个作者很懒,什么都没留下…
展开
-
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 句子中单词以空格符隔开。为简单起见,没有标点符号。 例如输入“I am a student”,则输出“student a
#include #include int main(){char str[100];char t;int i,j,m,n,len=strlen(str);gets(str);for(i=0,j=len-1;i{t=str[i];str[i]=str[j];str[j]=t;}j=0;for(i=0;i{if(str[i]=='原创 2017-08-02 10:47:49 · 1606 阅读 · 0 评论 -
德拓DATATOM校招C/C++软件研发笔试题
part 1:basic1.你应聘的岗位是什么?写出你对该岗位的理解,并说出你能胜任这份工作的理由2.你研读过那些技术类的书籍?有什么收获?3.Linux的一些命令及参数。4.JSON对象part 2:programming1.编写一个函数,用于统计一个字符串中各字符出现的次数2.精确的计算出10000的阶乘。part3:c++engineer1原创 2017-09-12 19:33:26 · 772 阅读 · 0 评论 -
高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(转载 2017-09-29 15:16:43 · 306 阅读 · 0 评论 -
C++中那些运算符不能重载
C++中不能重载的运算符:“?:”、“.”、“::”、“sizeof”和”.*”原创 2017-10-09 17:13:20 · 1634 阅读 · 0 评论 -
多进程与多线程的区别
1.调度执行,线程是操作系统调度执行的基本单位,而在引入线程的操作系统中进程一般不再是可调度分配的基本单位;2.资源拥有,线程基本不拥有资源,它的运行的资源取自于其所属的进程拥有的情报;3.地址空间,不同的地址空间是相互独立的,而隶属于同一进程下的各线程相互共享;4.数量关系,一个进程可以包含多个线程,一个线程只能属于一个进程;5.通信关系,进程间通信必须使用操作系统提供的进程间通原创 2017-08-02 10:17:40 · 439 阅读 · 0 评论 -
OSI七层网络模型分别是哪七层?各运行那些协议?
应用层DHCP · DNS · FTP · Gopher · HTTP · IMAP4 · IRC · NNTP · XMPP · POP3 · SIP · SMTP ·SNMP · SSH · TELNET · RPC · RTCP · RTP ·RTSP · SDP · SOAP · GTP · STUN · NTP · SSDP表示层HTTP/HTML原创 2017-10-09 17:26:38 · 9922 阅读 · 2 评论 -
TCP连接和断开过程详解
一、TCP报文简介TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才原创 2017-10-09 17:40:42 · 2819 阅读 · 0 评论 -
判断计算机处理器大端小端
1、区分大端小端:内存的低地址存放的数据的高位,就是大端存储。 内存低地址存放数据的低位,就是小端存储。2、下面的图可以清晰理解3、C++代码验证大端还是小端存储#include using namespace std;int main(){ int nNum = 0x12345678; char chData = *(char*)(&nNum);原创 2017-10-09 17:54:56 · 363 阅读 · 0 评论 -
tcp与udp的区别
1.基于连接与无连接TCP有连接,UDP无连接。2.执行速度UDP比TCP快3.程序结构TCP复杂,UDP简单4.数据的正确性TCP保证数据正确性,UDP不保证。5.数据的顺序TCP保证数据顺序,UDP不保证6.模式TCP为流模式,UDP为报文模式原创 2017-08-02 09:55:55 · 277 阅读 · 0 评论 -
在c++程序中调用被c编译器编译后的函数,为什么要加extern "c"?
首先,白塔修饰的目标是“extern”的。也就是告诉编译器,其声明的函数和变量可以在本模块或其他模块中使用。通常,在模块的头文件中对本模块提供给其他模块引用的函数和全局变量以关键字extern声明。其次,被它修饰的目标是“c”,意思是其修饰的变量和函数是按照c语言方式编译和连接的。我们来看看c++中对类似c的函数是怎样编译的。作为一种面向对象的语言,c++支持重载,而过程式语言c则不支持。函数原创 2017-08-02 17:29:02 · 3078 阅读 · 0 评论 -
几种常见的设计模式介绍
几种常用的设计模式介绍1. 设计模式的起源最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了转载 2017-09-21 00:35:30 · 700 阅读 · 0 评论 -
如何定义一个只能在堆上(或栈上)生成对象的类
在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。 动态建立类对象,是使用new运算符将对象建立原创 2017-09-14 21:59:50 · 360 阅读 · 0 评论 -
Delete和delete[]的区别
当调用delete的时候,系统会自动调用已分配的对象的析构函数。当我们用new[]分配的对象是基本数据类型时,用delete和delete[]没有区别。但是,当分配的对象是自定义对象时,二者不能通用。一般来说,使用new分配的对象,用delete来释放。用new[]分配的内存用delete[]来逐个释放。c/c++规定,当删除一个指针时,这个指针应指向其首地址。原创 2017-09-14 11:43:53 · 406 阅读 · 0 评论 -
Linux网络编程
对于网络理论介绍一般采用OSI模型,但是Linux中网络栈的介绍一般分为四层的Internet模型OSI七层网络模型:原创 2017-09-05 17:01:00 · 286 阅读 · 0 评论 -
Linux下进程间通信的方式有哪些?以及适用情况和优缺点
1.# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正转载 2017-08-12 15:42:43 · 812 阅读 · 0 评论 -
厦门美亚柏科信息股份有限公司C/C++笔试题
一、十道选择题数据结构、类、继承、二叉树等。不难。二、问答题1.#include2.构造函数的执行顺序3.复杂指针的声明4.什么是抽象类? 试声明一个抽象类。忘了,没写出来5.声明一个类,只能在堆上内存,不能在栈上。三、改错题c++类方面的。四、编程题1、string类2、写一个函数找出一个整数数组中第二大的数还有原创 2017-09-12 19:31:19 · 2720 阅读 · 0 评论 -
美乐威c++软件工程师笔试题
1.改错题class BaseClass{public:BaseClass():m_a1(1),m_a2(2){}~BaseClass();public:int GetValue1(){return m_a1;}int GetValue2(){return m_a2;}static int GetValue3(){ return (m_b1+m_a1);}p原创 2017-09-11 20:56:33 · 602 阅读 · 0 评论 -
烽火星空C++笔试
一、7道选择题,基础C/C++知识,数据结构,重载等。二、基础问答,网络方面的基础知识,DNS和VPN。C++中纯虚函数如何定义,使用时注意什么。多线程死锁问题。三、程序设计,宏定义--数字交换。实现一个取出全路径文件名的文件名部分的函数。编写派生类。四、两道智力题。五、项目总结。原创 2017-09-11 20:47:59 · 2870 阅读 · 0 评论 -
查找最小的k个元素 输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4
#include int main(){int a[10]={2,8,7,9,6,5,1,10,3,4}; int i,k,t,j; printf("请输入第几个数"); scanf("%d",&k); for(j=0;j { for(i=0;i{ if(a[i]>a[i+1]){t=a[i]; a[i]=a[i+1];a原创 2017-08-02 10:44:34 · 1532 阅读 · 0 评论 -
写一个函数,他的原型是 int continumax(char*outoutstr,char*intputstr).
功能:在字符串中找出连续最长的数字串,并把这个串长度返回,同事把这个最长数字串付给 outputstr所指内存。#include #include #include int continumax(char *outputstr,char *intputstr){int i=0,count=0,j;char ptr[20]={0};char *str=(char*)m原创 2017-07-21 14:20:06 · 650 阅读 · 0 评论 -
快速找出一个数组中的最大数、第二大数。
#include int main() { int i,max,second; int a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); max=a[0]; second=a[0]; for(i=0;i<10;i++) { if(max<a[i]) second=max; max=原创 2017-08-03 19:37:49 · 2108 阅读 · 4 评论 -
编写程序,打印出9×9乘法表
#include int main() { int i,j; for(i=1;i<10;i++) { for(j=1;j<10;j++) printf("%d*%d=%d ",i,j,i*j); printf("\n"); } return 0; }原创 2017-08-03 19:40:15 · 1778 阅读 · 0 评论 -
编写程序,实现strcmp()相同功能myStrcmp()函数
#include int mystrcmp(char *a,char *b); { char *a,*b; while((*a||*b)&&*a==*b) a++,b++; if(*a<*b) return -1; return 1; } int main() { char str1="axCde",str2="AXCde",str3="axCde",原创 2017-08-03 19:45:42 · 2441 阅读 · 0 评论 -
创建单链表并赋值,要求遍历能输出1~9
#include #define OK 0#define ERROR -1#define MALLOC_ERROR -2 typedef int ElementType;typedef struct node{ ElementType data; struct node *next; }Node;typedef Node *P原创 2017-08-11 21:00:38 · 853 阅读 · 0 评论 -
生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。 现在算起来,他一共吹熄了236根蜡烛。 请问,他从多少岁开始过生日party的? (第七届蓝桥杯B组
#include int main() { int i,j; for( i=1;i<=100;i++) { for( j=i;j<=100;j++) { if((i+j)*(j-i原创 2017-08-11 21:05:01 · 9483 阅读 · 1 评论 -
编程实现查找两个字符串的最大公共子串 示例:"aocdfe"和"pmcdfa"最大公共子串为"cfd"
#include#include#define none -1int fun(char *str1,char *str2){ char *p1=str1; char *p2=str2; int i,j,temp; if(*str1=='\0'||*str2=='0') return none; for(i=0;i<strlen(str);i++) { temp=0;原创 2017-08-11 21:08:02 · 511 阅读 · 0 评论 -
程序的编译和链接过程
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可加载、可执行代码的过程。将一个.c文件编译链接成.exe文件,需要以下几个步骤:预处理、编译、汇编、链接预处理器:将.c 文件转化成原创 2017-09-13 15:35:12 · 403 阅读 · 0 评论 -
统计一个字符串中各字符出现的次数
#include #include using namespace std; int main(){ string str; int ascii[256]={}; cout<<"请输入一个字符串:"; getline(cin,str); for(int i=0; i<str.size(); i++) ascii[(int)str[原创 2017-09-14 14:41:43 · 1501 阅读 · 0 评论 -
C++中的重载、覆盖和隐藏的区别
1.重载是一个类内部实现相同机理的操作,但是操作的对象不同。主要体现在: 方法在同一个类中重载的方法名称相同参数不同(参数的类型不同,参数的个数不同)virtual关键字可有可原创 2017-09-14 21:01:30 · 302 阅读 · 0 评论 -
多继承中的构造函数的顺序
(1)任何虚拟基类的构造函数按照它们被继承的顺序构造。(2)任何非虚拟基类的构造函数按照它们被构造的顺序构造。(3)任何成员对象的构造按照它们声明的顺序调用。(4)类自身的构造函数。原创 2017-09-14 21:49:48 · 845 阅读 · 0 评论 -
虚函数和纯虚函数有什么区别
(1)类里如果声明了虚函数,这个函数是实现的,哪怕是空实现,它的作用就是为了能让这个函数在它的子类里面可以被覆盖,这样编译器就可以使用后期绑定来达到多态了。纯虚函数只是一个接口,是个函数的声明而已,它要留到子类里去实现。(2)虚函数在子类里面也可以不重载;但纯虚函数必须在子类去实现,这就像Java的接口一样。通常把很多函数加上virtual,是一个好习惯,虽然牺牲了一些性能,但是增加了面向对象原创 2017-09-11 17:03:15 · 821 阅读 · 0 评论 -
栈和堆的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类原创 2017-09-11 20:15:26 · 301 阅读 · 0 评论 -
网友年龄 某君新认识一网友。 当问及年龄时,他的网友说: “我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄” 请你计算:网友的年龄一共有多少种
#include int main(){int i,j,t;for(i=10;i{t=i%10*10+i/10;for(j=0;j{if(t==j&&i-j==27)printf("%d ",i);}}}原创 2017-08-02 10:55:48 · 5530 阅读 · 1 评论