C++开发工程师笔试题(汇编三篇)
C/C++软件工程师的月薪范围一般在3500-20000元之间。一般而言,刚刚毕业的大学生以及拥有1-3年的工作经验者的月薪通常在3500-4500元左右,下面就由百文网小编为大家介绍一下C++开发工程师笔试题的文章,欢迎阅读。
C++开发工程师笔试题篇1
1、编写程序:在O(n)时间复杂度内从数组array[0..n-1]中找出第k个最小的元素。 说明:算法可以对array中的元素进行排序。
2、综合考察:
银行有个存有n个用户编号的文件,每个数都小于n,其中n=10的7次方。每个编号都不重复。
输出:n个数升序排列。
约束条件:内存最多有2兆的空间,运行时间复杂度为O(n)。
C++开发工程师笔试题篇2
1、数据结构
在二叉树中找出和为某一输入值的所有路径。
#include
void getPath(struct treeNode* node, int sum, vector& stack, int currentSum) { //stack用来存放路径,sum为输入值
} if (node == NULL) return; currentSum += node->id; stack.push_back(node->id); if (node->lchild != NULL) getPath(node->lchild, sum, stack, currentSum); if (node->rchild != NULL) getPath(node->rchild, sum, stack, currentSum); if (node->lchild == NULL && node->rchild == NULL) { if (currentSum == sum) { vector::iterator it = stack.begin(); for (; it != stack.end(); ++it) printf("%d ", *it); printf("/n"); } } stack.pop_back();
2、编写程序:如何获得一个整数的二进制表达中有多少个1?
C++开发工程师笔试题篇3
1、改错
如下程序能不能正确输出,如果不能,让他正确输出hello字符串。
void New(char * p) { p = new char[5]; } void main() { char* p = NULL; New(p); strcpy(p, "hello"); printf("%s", p); }
2、排列算法
一个数组{3,4,5,6,3},请输出这个数组的全排列,比如34563、43563、33456...。
#include
#include
template
void Print(T* tArray, int iSize)
{
for(int i = 0; i < iSize; ++i)
{
std::cout << tArray[i] << ' ';
}
std::cout << std::endl;
}
template
void Permutation(T* tArray, int iSize)
{
int* iIndex = new int[iSize + 1];
for(int i = 0; i < iSize; ++i)
{
iIndex [i] = iSize - i;
}
Print(tArray, iSize);
for(int i = iSize - 1; i > 0; )
{
-- iIndex [i];
--i;
int j = iSize - 1;
do
{
if(tArray[j--] != tArray[i++])
{
std::swap(tArray[j--], tArray[i++]);
}
}while(j > i);
Print(tArray, iSize);
i = iSize - 1;
for(;iIndex [i] == 0; --i)
{
iIndex [i] = iSize - i;
}
}
delete []iIndex;
}
int main()
{
int a[] = {3,4,5,6,3};
Permutation(a,5);
}