记录2017/9/7趋势科技笔试题

1.下面程序一共会在屏幕上输出多少个“-” ?

#include<iostream>
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
using namespace std;
int main( )
{
    int i;
    for(i = 0; i < 2; i++)
    {
        cout<<"-\n";
        fork( );
        cout <<"-\n";
    }
    cout << endl;
    return 1;
}

解答:

第一个‘-’为第一次循环的第一个,后面4个为fork子进程的,循环第二次主进程2个,fork进程1个,一共8次,Ubuntu输出8个,参考答案为9个,不明所以、

2. 该段代码的输出结果是?

#include<iostream>
using namespace std;
int nest(int i)
{
    if (i < 0 )
        return 0;
    else if (i == 0)
        return 1;
    else
        return nest(i-1) + nest(i-2) + i;
}
int main( )
{
    cout << nest(7)<< endl;
    return 1;
}
 
 

//本题应该倒着计算比较容易nest(-1) = 0;nest(0) = 1;nest(1) = nest(-1) + nest(0) + 1 = 2;nest(2) = nest(1) + nest(0) + 2 = 2+1+2=5;nest(3) = nest(2) + nest(1) + 3 = 5+2+3=10;nest(4) = nest(3) + nest(2) + 4 = 10+5+4=19;nest(5) = nest(4) + nest(3) + 5 = 19+10+5=34;nest(6) = nest(5) + nest(4) + 6 = 34+19+6=59;nest(7) = nest(6) + nest(5) + 7 = 59+34+7=100;

3.下面协议中用于WWW传输控制的是?答案:HTTP(超文本传输协议)

URL:资源定位符

SMTP:简单邮件传输协议

HTML:超文本标记语言

4.以下表达式选择结果。(    )

std::string str1("trend");
std::string str2("micro");
std::string& strs = str1;
std::string* ptrs = &str1;
strs = str2;
ptrs = &str2;

答:
strs = micro, * ptrs = micro
引用在初始化以后赋值操作是无效的,

5.请选择正确的数字填充:某缓存系统采用LRU(近期最少使用算法)淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问以下数据项的时候1,5,1,3,2,4,1,2出现缓存命中的次数是__。最后缓存中即将准备淘汰的数据项是(3,3    )
最后在缓存中的排列为12534,1命中的次数为3,在命中4的时候3将淘汰

参考博客

6.请选择表达式 '0' + 1 的结果(本题数值均为十进制)?

字符‘0’的ASCLL的值为48,所以结果为49

7.线程是CPU调度和分派的基本单位,进程操作系统的基本单位(资源竞争)

8.以下表达式选择结果

int a = 0;
int b = (a=-1) ? 2:3;
int c = (a=0) ? 2:3;
(a=-1)表达式的值为1,所以b=2,(a=0)表达式的值为0,所以c=3;

9.编程题一为剑指offer上的题:

1.给出一个二叉树,用一个函数确定是否有一条从根节点到叶子节点的路径,这个路径上所有节点的值加在一起等于给定的sum的值。函数声明hasPathSum已经给出,写出程序设计思路并且实现该函数。尽量提供多种实现方法

struct TreeNode {
     int val;
    TreeNode *left;
     TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 };

bool hasPathSum(TreeNode *root, int sum) {
	if (root == NULL)//递归终止条件
	{
		return false;
	}
	if (sum<0)//如果路径中前几个点大于sum提前结束
	{
		return false;
	}
	if (root->left==NULL&&root->right==NULL)//最后一个节点
	{
		return false;
	}
	return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);
}

2. 请编写一个函数将字符串s2添加到字符串s1的末端,函数不受s1、s2空间大小的限制。可以利用常用字符串函数strlen,strcpy,strcat,strcmp,strstr实现

简单不在贴代码

猜你喜欢

转载自blog.csdn.net/qq_31208451/article/details/77878389