面试攻略:46大公司C++与Java笔试题集锦

需积分: 9 0 下载量 170 浏览量 更新于2024-09-18 收藏 345KB PDF 举报
"46家公司的面试题集,涵盖了C++和Java等技术领域的题目,适合准备面试者学习。" 1. Sony笔试题 - 题目1:这是一道填充空缺代码的问题,目标是生成一个星号(*)组成的图案。根据规律,这个程序应该是一个简单的循环结构,用于打印出不同行数的星号,每一行的星号数量递增。可以使用两个嵌套循环来实现,外层循环控制行数,内层循环控制每行的星号个数。 ```c for(i = 1; i <= N; i++) { for(j = 1; j <= 2*i - 1; j++) printf("*"); printf("\n"); } ``` - 题目2:这是一个要求实现降序排序的程序。可以使用冒泡排序、选择排序或者快速排序等算法。这里展示一个简单的冒泡排序实现: ```c void sort() { int temp; for (i = 0; i < sizeof(array) / sizeof(array[0]) - 1; i++) { for (j = 0; j < sizeof(array) / sizeof(array[0]) - 1 - i; j++) { if (array[j] < array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } ``` 2. 费波那契数列 - 要求计算第10项,可以使用递归或迭代方法。递归方法简单直观,但效率低,因为它会重复计算许多相同的子问题。而迭代方法效率更高,避免了重复计算。以下是迭代法实现: ```c int Pheponatch(int N) { if (N <= 0) return 0; int fib1 = 0, fib2 = 1, fib = 0; for (int i = 2; i <= N; i++) { fib = fib1 + fib2; fib1 = fib2; fib2 = fib; } return fib; } ``` 3. 程序崩溃问题 - 这段代码在`append`函数调用后缺少分号,导致语法错误。另外,`TNode`结构体定义中没有包含结构体名称,应修正为`typedef struct TNode { ... } TNode;`。正确的代码片段应该是: ```c #include<stdio.h> #include<malloc.h> typedef struct TNode { TNode* left; TNode* right; int value; } TNode; TNode* root = NULL; void append(int N); int main() { append(63); append(45); append(32); } ``` 4. 其他知识点: - 面试中常出现的编程语言基础,如C++和Java的语法、数据结构(数组、链表、树等)、排序算法、递归与迭代、内存管理(如动态内存分配)等。 - 面试题通常会测试应聘者的逻辑思维能力、问题解决能力以及对基础知识的掌握程度。 - 在准备面试时,除了理解具体知识点,还需要了解其背后的原理和应用场景,以便灵活运用。 通过这些题目,你可以了解面试中可能遇到的问题类型,并进行有针对性的复习和练习。对于每种类型的题目,都需要深入理解其解题思路和优化方法,这样才能在实际面试中应对自如。