`
pleasetojava
  • 浏览: 730063 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

公司笔试c、c++试题

阅读更多

现在的公司招聘,都要笔试面试.如果你不是那种编程功底非常深厚的人,又不好好准备一番,在笔试面试中往往会处于被动局面.虽然有些笔试题是故意为难我们,有点钻牛角尖.但是很多笔试题面试题确实能够很好地看出我们的基础.

在这里,我就略去那些钻牛角尖的题.从csdn论坛我近半年的收集中选出10道有代表性的题目,难度基本上是逐渐加大.对数组,指针,数据结构,算法,字符串,文件操作等问题都有覆盖.主要以c语言的实现为主,也有c++的题.大家可以先做做这10道题,测试一下自己的水平.

1. 下面这段代码的输出是多少(在32位机上).

char *p;

char *q[20];

char *m[20][20];

int (*n)[10];

struct MyStruct

{

char dda;

double dda1;

int type ;

};
MyStruct k;

printf("%d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));

2.

(1)

char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };
for(int i=0;i<12;i++)
printf("%d ",_______);
在空格处填上合适的语句,顺序打印出a中的数字

(2)

char **p, a[16][8];

问:p=a是否会导致程序在以后出现问题?为什么?

3.用递归方式,非递归方式写函数将一个字符串反转.

函数原型如下:char *reverse(char *str);

4.strcpy函数和memcpy函数有什么区别?它们各自使用时应该注意什么问题?

5.写一个函数将一个链表逆序.

一个单链表,不知道长度,写一个函数快速找到中间节点的位置.

写一个函数找出一个单向链表的倒数第n个节点的指针.(把能想到的最好算法写出).

6.用递归算法判断数组a[N]是否为一个递增数组。

7.

有一个文件(名为a.txt)如下,每行有4项,第一项是他们的名次,写一个c程序,将五个人的名字打印出来.并按名次排序后将5行数据仍然保存到a.txt中.使文件按名次排列每行.


2,07010188,0711,李镇豪,
1,07010154,0421,陈亦良,
3,07010194,0312,凌瑞松,
4,07010209,0351,罗安祥,
5,07010237,0961,黄世传,

8.写一个函数,判断一个unsigned char 字符有几位是1.

写一个函数判断计算机的字节存储顺序是升序(little-endian)还是降序(big-endian).

9.微软的笔试题.

Implement a string class in C++ with basic functionality like comparison, concatenation, input and output. Please also provide some test cases and using scenarios (sample code of using this class).

Please do not use MFC, STL and other libraries in your implementation.

10.有个数组a[100]存放了100个数,这100个数取自1-99,且只有两个相同的数,剩下的98个数不同,写一个搜索算法找出相同的那个数的值.(注意空间效率时间效率尽可能要低).

这十道题还是能够看出自己的水平如何的.如果你能不假思索地做出这10道题,估计去国外大公司是没有问题了,呵呵.

答案我在整理中,以后陆续发布.................

下面有些题也不错,可以参考.

1.下面的代码输出是什么,为什么?
void foo(void)
{
unsigned int a = 6;
int b = -20;
(a+b>6)?puts(">6"):puts("<=6");//puts为打印函数
}
输出 >6.

就是考察隐式转换.int型变量转化成unsigned int, b成了正数.

2. b)运行下面的函数会有什么结果?为什么?
void foo(void)
{
char string[10],str1[10];
int i;
for(i=0;i<10;i++)
{
str1[i] = 'a';
}
strcpy(string, str1);
printf("%s",string);
}

首先搞清strcpy函数的实现方法,

char * strcpy(char * strDest,const char * strSrc)
{
 if ((strDest == NULL) || (strSrc == NULL))
  throw "Invalid argument(s)";
 char * strDestCopy = strDest;
 while ((*strDest++ = *strSrc++) != '\0');
 return strDestCopy;
}

由于str1末尾没有'\0’结束标志,所以strcpy不知道拷贝到何时结束.
printf函数,对于输出char* 类型,顺序打印字符串中的字符直到遇到空字符('\0')或已打印了由精度指定的字符数为止.

下面是微软的两道笔试题....

3. Implement a string class in C++ with basic functionality like comparison, concatenation, input and output. Please also provide some test cases and using scenarios (sample code of using this class).

Please do not use MFC, STL and other libraries in your implementation.

我的实现方案如下,这道题真地对c++的主要特性都进行了较好地考察.

String.h:

#ifndef STRING_H
#define STRING_H

#include <iostream>
using namespace std;

class String{
public:
String();
String(int n,char c);
String(const char* source);
String(const String& s);
//String& operator=(char* s);
String& operator=(const String& s);
~String();

char& operator[](int i){return a[i];}
const char& operator[](int i) const {return a[i];}//对常量的索引.
String& operator+=(const String& s);
int length();

friend istream& operator>>(istream& is, String& s);//搞清为什么将>>设置为友元函数的原因.
//friend bool operator< (const String& left,const String& right);
friend bool operator> (const String& left, const String& right);//下面三个运算符都没必要设成友元函数,这里是为了简单.
friend bool operator== (const String& left, const String& right);
friend bool operator!= (const String& left, const String& right);
private:
char* a;
int size;
};

#endif


String.cpp:


#include "String.h"
#include <cstring>
#include <cstdlib>

String::String(){
a = new char[1];
a[0] = '\0';
size = 0;
}

String::String(int n,char c){
a = new char[n + 1];
memset(a,c,n);
a[n] = '\0';
size = n;
}

String::String(const char* source){
if(source == NULL){
a = new char[1];
a[0] = '\0';
size = 0;
}
else
{ size = strlen(source);
a = new char[size + 1];
strcpy(a,source);
}
}

String::String(const String& s){
size = strlen(s.a);//可以访问私有变量.
a = new char[size + 1];
//if(a == NULL)
strcpy(a,s.a);
}

String& String::operator=(const String& s){
if(this == &s)
return *this;
else
{
delete[] a;
size = strlen(s.a);
a = new char[size + 1];
strcpy(a,s.a);
return *this;
}
}
String::~String(){
delete[] a;//
}

String& String::operator+=(const String& s){
int j = strlen(a);
int size = j + strlen(s.a);
char* tmp = new char[size+1];
strcpy(tmp,a);
strcpy(tmp+j,s.a);
delete[] a;
a = tmp;

return *this;
}

int String::length(){
return strlen(a);
}

main.cpp:

#include <iostream>
#include "String.h"

using namespace std;

bool operator==(const String& left, const String& right)
{
int a = strcmp(left.a,right.a);
if(a == 0)
return true;
else
return false;
}
bool operator!=(const String& left, const String& right)
{
return !(left == right);
}

ostream& operator<<(ostream& os,String& s){
int length = s.length();
for(int i = 0;i < length;i++)
//os << s.a[i];这么不行,私有变量.
os << s[i];
return os;
}


String operator+(const String& a,const String& b){
String temp;
temp = a;
temp += b;
return temp;

}

bool operator<(const String& left,const String& right){

int j = 0;
while((left[j] != '\0') && (right[j] != '\0')){
if(left[j] < right[j])
return true;
else
{
if(left[j] == right[j]){
j++;
continue;
}
else
return false;
}
}
if((left[j] == '\0') && (right[j] != '\0'))
return true;
else
return false;
}

bool operator>(const String& left, const String& right)
{ int a = strcmp(left.a,right.a);
if(a > 0)
return true;
else
return false;

}

istream& operator>>(istream& is, String& s){
delete[] s.a;
s.a = new char[20];
int m = 20;
char c;
int i = 0;
while (is.get(c) && isspace(c));
if (is) {
do{s.a[i] = c;
i++;
/*if(i >= 20){
cout << "Input too much characters!" << endl;
exit(-1);
}*/
if(i == m - 1 ){
s.a[i] = '\0';
char* b = new char[m];
strcpy(b,s.a);
m = m * 2;
s.a = new char[m];
strcpy(s.a,b);
delete[] b;
}
}
while (is.get(c) && !isspace(c));
//如果读到空白,将其放回.
if (is)
is.unget();
}
s.size = i;
s.a[i] = '\0';
return is;
}


int main(){
String a = "abcd";
String b = "www";
//String c(6,b);这么写不对.
String c(6,'l');
String d;
String e = a;//abcd
String f;
cin >> f;//需要输入...
String g;
g = a + b;//abcdwww

if(a < b)
cout << "a < b" << endl;
else
cout << "a >= b" << endl;
if(e == a)
cout << "e == a" << endl;
else
cout << "e != a" << endl;

b += a;

cout << a << endl;
cout << b << endl;
cout << c << endl;
cout << d << endl;
cout << e << endl;
cout << f << endl;
cout << g << endl;
cout << g[0] << endl;
return 0;
}

4. Implement a single-direction linked list sorting algorithm. Please first define the data structure of linked list and then implement the sorting algorithm.

5.编写一个函数,返回两个字符串的最大公串!例如,“adbccadebbca”和“edabccadece”,返回“ccade”

联想笔试题
  1.设计函数 int atoi(char *s)。

int atoi(const char *nptr);
函数说明
atoi()会扫描参数nptr字符串,跳过前面空格字符,直到遇上数字或正负符号才开始做转换,而再 遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
返回值 返回转换后整型数。

#include <stdio.h>
#include <ctype.h>

int myAtoi(const char* s){
int result = 0;
int flag = 1;
int i = 0;
while(isspace(s[i]))
i++;
if(s[i] == '-'){
flag = -1;
i++;
}
if(s[i] == '+')
i++;
while(s[i] != '\0'){
if((s[i] > '9') || (s[i] < '0'))
break;
int j = s[i] - '0';
result = 10 * result + j;
i++;
}
result = result * flag;
return result;
}

int main(){
char* a = " -1234def";
char* b = "+1234";
int i = myAtoi(a);
int j = myAtoi(b);
printf("%d \n",i);
printf("%d",j);
return 0;
}





  2.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?
  3.解释局部变量、全局变量和蔡淞康暮濉?BR>  4.解释堆和栈的区别。
  5.论述含参数的宏与函数的优缺点。
  普天C++笔试题
  1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。
  2.写一个函数,将其中的\t都转换成4个空格。
  3.Windows程序的入口是哪里?写出Windows消息机制的流程。
  4.如何定义和实现一个类的成员函数为回调函数?
  5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
  6.C++里面如何声明const void f(void)函数为C程序中的库函数?
  7.下列哪两个是等同的
  int b;
  A const int* a = &b;
  B const* int a = &b;
  C const int* const a = &b;
  D int const* const a = &b;
  8.内联函数在编译时是否做参数类型检查?
  void g(base & b){
   b.play;
  }
  void main(){
   son s;
   g(s);
   return;
  }
华为笔试题
  1.请你分别画出OSI的七层网络结构图和TCP/IP的五层结构图。
  2.请你详细地解释一下IP协议的定义,在哪个层上面?主要有什么作用?TCP与UDP呢?
  3.请问交换机和路由器各自的实现原理是什么?分别在哪个层次上面实现的?
  4.请问C++的类和C里面的struct有什么区别?
  5.请讲一讲析构函数和虚函数的用法和作用。
  6.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
  7.8086是多少位的系统?在数据总线上是怎么实现的?
Sony笔试题
  1.完成下列程序
  *
  *.*.
  *..*..*..
  *...*...*...*...
  *....*....*....*....*....
  *.....*.....*.....*.....*.....*.....
  *......*......*......*......*......*......*......
  *.......*.......*.......*.......*.......*.......*.......*.......
  #include <stdio.h>
  #define N 8
  int main()
  {
   int i;
   int j;
   int k;
   ---------------------------------------------------------
   | |
   | |
   | |
   ---------------------------------------------------------
   return 0;
  }
  2.完成程序,实现对数组的降序排序
  #include <stdio.h>
  void sort( );
  int main()
  {
   int array[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出
   sort( );
   return 0;
  }
  void sort( )
  {
   ____________________________________
   | |
   | |
   |-----------------------------------------------------|
  }
  3.费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用其他方法,但要说明你选择的理由。
  #include <stdio.h>
  int Pheponatch(int);
  int main()
  {
   printf("The 10th is %d",Pheponatch(10));
   return 0;
  }
  int Pheponatch(int N)
  {
  --------------------------------
  | |
  | |
  --------------------------------
  }
  4.下列程序运行时会崩溃,请找出错误并改正,并且说明原因。
  #include <stdio.h>
  #include <malloc.h>
  typedef struct{
   TNode* left;
   TNode* right;
   int value;
  } TNode;
  TNode* root=NULL;
  void append(int N);
  int main()
  {
   append(63);
   append(45);
   append(32);
   append(77);
   append(96);
   append(21);
   append(17); // Again, 数字任意给出
  }
  void append(int N)
  {
   TNode* NewNode=(TNode *)malloc(sizeof(TNode));
   NewNode->value=N;
  
   if(root==NULL)
   {
   root=NewNode;
   return;
   }
   else
   {
   TNode* temp;
   temp=root;
   while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp. right!=NULL
  ))
   {
   while(N>=temp.value && temp.left!=NULL)
   temp=temp.left;
   while(N<temp.value && temp.right!=NULL)
   temp=temp.right;
   }
   if(N>=temp.value)
   temp.left=NewNode;
   else
   temp.right=NewNode;
   return;
   }
  }

MSRA Interview Written Exam(December 2003,Time:2.5 Hours)


1写出下列算法的时间复杂度。
(1)冒泡排序;
(2)选择排序;
(3)插入排序;
(4)快速排序;
(5)堆排序;
(6)归并排序;

2写出下列程序在X86上的运行结果。

struct mybitfields
{
unsigned short a : 4;
unsigned short b : 5;
unsigned short c : 7;
}test

void main(void)
{
int i;
test.a=2;
test.b=3;
test.c=0;

i=*((short *)&test);
printf("%d\n",i);
}

3写出下列程序的运行结果。

unsigned int i=3;
cout<<i * -1;

4写出下列程序所有可能的运行结果。

int a;
int b;
int c;

void F1()
{
b=a*2;
a=b;
}

void F2()
{
c=a+1;
a=c;
}

main()
{
a=5;
//Start F1,F2 in parallel
F1(); F2();
printf("a=%d\n",a);
}

5考察了一个CharPrev()函数的作用。

6对 16 Bits colors的处理,要求:
(1)Byte转换为RGB时,保留高5、6bits;
(2)RGB转换为Byte时,第2、3位置零。

7一个链表的操作,注意代码的健壮和安全性。要求:
(1)增加一个元素;
(2)获得头元素;
(3)弹出头元素(获得值并删除)。

8一个给定的数值由左边开始升位到右边第N位,如
0010<<1 == 0100
或者
0001 0011<<4 == 0011 0000
请用C或者C++或者其他X86上能运行的程序实现。

附加题(只有在完成以上题目后,才获准回答)
In C++, what does "explicit" mean? what does "protected" mean?

1。在C++中有没有纯虚构造函数?
2。在c++的一个类中声明一个static成员变量有没有用?
3。在C++的一个类中声明一个静态成员函数有没有用?
4。如何实现一个非阻塞的socket?
5。setsockopt, ioctl都可以对socket的属性进行设置,他们有什么不同?
6。解释一下进程和线程的区别?
7。解释一下多播(组播)和广播的含义?
8。多播采用的协议是什么?
9。在c++中纯虚析构函数的作用是什么?请举例说明。
10。编程,请实现一个c语言中类似atoi的函数功能(输入可能包含非数字和空格)
分享到:
评论

相关推荐

    各公司招聘笔试面试C/C++试题总结

    "各公司招聘笔试面试C/C++试题总结"这个资源,显然为求职者提供了宝贵的准备材料,涵盖了多个公司在招聘过程中可能会出现的C和C++相关问题。以下是对这些知识点的详细解释: 1. **基础语法**:C++是在C语言基础上...

    华为C/C++笔试最全试题

    ### 华为C/C++笔试知识点详解 #### 静态关键字的作用 ...以上知识点涵盖了C/C++编程的基础概念、语法细节以及面试中常见的技术问题,对于准备华为或其他公司C/C++笔试的应聘者来说,这些都是重要的复习内容。

    2009福富笔试题(java,c/c++)海外,电信

    2009福富笔试题(java,c/c++)海外,电信 以下是从给定的文件信息中生成的相关知识点: 1. 复习要点1.jsp 基础(转向,9 大对象) 知识点:jsp 基础、服务器端编程、Java Web 开发 解释:jsp 是一种服务器端编程语言...

    C/C++笔试试题(word文档版,内附答案)

    本资源提供了C/C++笔试试题的集合,其中包括微软、意法半导体等世界著名公司的笔试试题,这些试题经常出现在各类公司的笔试中。该资源对找工作的同志们有很大的帮助。 知识点1:求函数的返回值 函数func(x)的...

    各公司C C++招聘笔试面试题大全

    《各公司C C++招聘笔试面试题大全》 在IT行业中,C和C++作为基础且重要的编程语言,被广泛应用于系统级编程、游戏开发、嵌入式系统等多个领域。因此,掌握C和C++的知识对于求职者来说至关重要。这份资料集合了各大...

    海康威视2014校园招聘笔试题目C++

    这份笔试题目是当年海康威视为选拔优秀技术人才而设计的一份考卷,旨在考察应届毕业生的C++基础、算法理解以及问题解决能力。以下是基于这个主题可能涉及的一些C++知识点: 1. **基本语法**:笔试题目可能会涵盖C++...

    联创笔试题 C++ 联创亚信

    【标题】"联创笔试题 C++ 联创亚信"涉及到的是C++编程语言在联创亚信公司招聘笔试过程中的相关试题。联创亚信是一家专注于信息技术服务的公司,对于技术岗位的应聘者,他们可能会通过C++编程测试来评估候选人的编程...

    BAT谷歌微软等各IT公司互联网C++ JAVA 计算机笔试面试真题复习资料108个文档合集.zip

    BAT谷歌微软等各IT公司互联网C++ JAVA 计算机笔试面试真题复习资料108个文档合集 C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案.docx c++笔试题汇总.pdf ...

    C++ JAVA 计算机笔试面试真题复习资料BAT谷歌微软等各IT公司互联网面试笔试资料库合集(108个).zip

    C++ JAVA 计算机笔试面试真题复习资料BAT谷歌微软等各IT公司互联网面试笔试资料库合集(108个) Google笔试面试 IQ智力面试题笔试题 JAVA笔试面试资料 NET面试题笔试题 web开发 中兴资料 微软笔试面试 数据库面试题...

    宇视科技C语言笔试题目

    宇视科技是一家在安防监控领域知名的高新技术企业,其在招聘过程中常常会涉及到C语言的笔试环节,以评估应聘者的基础编程能力。这份压缩包文件包含了2014年至2018年的C语言笔试题目,旨在帮助求职者准备宇视科技的...

    校招C&C++笔试题大全

    "校招C&C++笔试题大全"是一个集各大公司历年校招笔试题目的资源库,专门为准备C++和C语言面试的同学们提供了一个宝贵的练习平台。这个压缩包文件包含了多种不同难度和类型的题目,旨在帮助学生全面提高对这两种编程...

    C++ 笔试题 google 微软 华为 索尼 中兴 大唐 各种C++笔试题目

    C++笔试题 Sony笔试题 几道题目及自做答案 北电 普天C++笔试题 我所收集的intel比试题 面试题 2005年腾讯招聘 微软 微软亚洲技术支持中心面试题目 微创笔试题目(微创,微软在中国的合资公司) Intel笔试面试题目 ...

    华为C/C++笔试题

    【华为C/C++笔试题】是针对准备华为公司招聘过程中的C和C++编程技能考核的一系列题目集合,这些题目通常涵盖了C/C++语言的基础、进阶和实战应用等多个方面,旨在评估候选人的编程能力、逻辑思维以及问题解决技巧。...

    世界上最全的 Java 、C/C++、笔试、面试 试题 ,包括各软件公司笔面试题(中兴、华为)

    物超所值,世界上最全的Java、JSP、servlet等软件笔试、面试试题,包括各软件公司笔面试题。只要下载了本资源,其他的试题就用不着下载了,即使下载了也是和本资源重复的,不要浪费资源分哦!!!其中还包括各软件...

    2018年H3C新华三C语言笔试题(社招)

    在2018年,H3C新华三公司面向社会招聘时,为候选人提供了一套C语言笔试题,旨在测试候选人在C语言编程方面的基础与实际应用能力。由于题目中并未给出具体答案,我们将对可能涉及的知识点进行详细阐述,帮助理解和...

    各软件公司C或C++面试试题

    本篇将基于提供的各软件公司的面试及笔试题目,深入探讨C和C++的相关知识点。 1. **基本语法与数据类型:**面试中经常考察的数据类型包括整型(int, short, long)、浮点型(float, double)、字符型(char)以及...

    天地伟业12和13年笔试题目

    例如,可能会有编程题目,涉及C/C++、Java或Python等语言的语法、逻辑或效率优化;也可能包括数据库设计和查询,如SQL语句的编写;还有可能涉及到软件工程的实践,如需求分析、设计模式或测试方法。 在数据结构方面...

    广州各大软件公司笔试面试题(有答案)

    (内部资料) 广州-北承题目.doc 广州-地球村科技.doc ...广州-御银科技股份有限公司试卷(C++).doc 只列出一部分,想到广州找软件方面工作的朋友不妨看看,或许有些收获,祝大家都顺利找到理想的工作!

    各个软件公司 面试题 笔试题 c c++有答案

    这份资料集合了各个软件公司的面试题和笔试试题,并附带了答案,旨在帮助准备C++面试的人们提升自己的技能和应试能力。 C++面试题通常涵盖以下几个关键方面: 1. **基础语法**:这包括对变量、数据类型、运算符、...

    150多家公司笔试题(C/C++/SQL)及部分面试问题

    "150多家公司笔试题(C/C++/SQL)及部分面试问题"这个压缩包文件集合了众多知名企业的相关试题,如华为、中兴、浙大网新、清华同方和东方通信等,这些都是在IT领域有着深厚底蕴和影响力的公司。这些题目旨在测试和考察...

Global site tag (gtag.js) - Google Analytics