深信服2018年实习生校园招聘总结

2024-03-18 10:38

本文主要是介绍深信服2018年实习生校园招聘总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参加了深信服2018届实习生的笔试,面试,顺利拿到offer,下面记录一下自己在这次笔试和面试的一下问题,题目很基础,但是是多选题,非常容易出错,及其考验基本功。

1下面代码能输出hell的是:

A.char buf[4]="hell";
B.char buf[]="hell";
C.char buf[8]=0;memcpy(buf,"hello",strlen("hell"));
D.char buf[4];strcpy(buf,"hell");
//答案bc,因为ad的内存分配不过,出现错误

2.简单略。

3 .下面代码的运行结果:
这里注意一个宏定义的函数功能,他传进去的arr是数组的指针,因此此题有解,而不是运行错误,本题答案为2。

#include<iostream>
using namespace std;
#define ADD(arr,cnt)                \
do {                                \int i;                          \for (i = 0; i < cnt; ++i){      \ret += arr[i];              \}                               \
}while(0)    //只会执行一次循环
int main(){int arr[2][2] = { 1,1 };//cout << arr[1][1] << arr[1][0] << endl;int i, ret = 0;for (i = 0; i < 2; i++)ADD(arr[i], 2);printf("%d", ret);
}

4.下代码运行结果

//t.a=1,t.b=0,因此错误
1.struct {int a, b;}t = { 1 };printf("%d", t.a/t.b);
//a为初始化,错误
2.void func() {int a;printf("%d", a);
}
//静态局部变化自动初始化为0,
3. void func() {static int a;printf("%d", a);
}
//全局变量初始化为0
4. int a;
void func() {printf("%d", a);
}

5.下面代码输出结果

#include<iostream>
using namespace std;
int main(){int i1 = 0xf0000000;unsigned int i2 = 0xf0000000;//cout << i1 << " " << i2 << endl;i1 >>= 1;i2 >>= 1;printf("%08x,%08x", i1, i2);
}

解析:i1为负数,i2为正数,c中的右移为算数右移,因此i1应为oxf80000,i2为0x78000000。

6.过于简单略
7.下面代码输出结果是:

#include<iostream>
using namespace std;
int main(){signed char c1 = -1;int i1 = (int)c1;unsigned char c2 = -1;int i2 = (int)c2;int i3 = int(3 * 1.0 / 2 * 3);cout << i1 << " " << i2 << " " << i3 << endl;
}

解析:有符号的char类型十六进制0xff,转成int要进行符号扩展成0xffffffff,因此为-1。声明成无符号-1,0xff,转成255,转成int后为255,i3=4,很简单。

8.简单略。
9.下面代码输出结果是:

#include<iostream>
using namespace std;
int main(){int a[6][2] = { 1,2,3,4,5,6,7,8,9 };int *p = a[1];//cout << *(p++) << endl;  //3//cout << *p++ << endl;   //3int(*q)[2] = &a[1];printf("%d,%d,%d", *++p, q[0][0], q[1][2]);
}

解析:依次输出4,3,7,int(*q)[2] = &a[1];比较疑惑q[1][2]=7,本来以为会出错的,这里注意q是一个数组指针。

11.32位x86,下面输出结果为:

#include <iostream>
using namespace std;
int main() {const char* str = "hello";char str1[] = "he";cout << sizeof(str) << endl;cout << sizeof(str1) << endl;cout << sizeof("hello") << endl;
}

分别输出为4,3,6。
注意什么时候数组会退化成指针,比如如果将数组作为形参传入一个函数是,其将退化成指针。

12.下面代码输出结果:

#include <iostream>
using namespace std;
int get(int val) {static int s1, s2 = 1;if (val > 0)s1 = val;return s1 + s2;
}
int main() {cout << get(0) << endl;cout << get(2) << endl;cout << get(0) << endl;
}

解析:*1. 注意到声明的类型为static,因此编译器会自动的初始化s1=0,2. s1的值只声明一次,一旦被修改其不会重新赋值为0,因此本题一次输出:1,3,3*。

13. 在32位x86平台,下面代码输出结果:

#include <iostream>
using namespace std;
struct {int val1;int val2;
}a = { 1 };
int main() {int *p = (int *)&a;p[0] = 2;cout << p[0] << " " << p[1] << endl;
}

解析:这里a是全局的变量,因此a.val1=1,a.val2=0,而p指向的是a.val1,因此分别输出2,0.

14:32位x86,4字节对齐,下面代码的输出结果为:

#include <iostream>
#pragma pack(4)
using namespace std;
union uni {struct {int n3;}s1;struct{int n4;int n5;}s2;
};
int main() {union uni u;cout << sizeof(u) << endl;int *p = &u.s2.n4;memset(&u, 0, sizeof(u));u.s1.n3 = 1;u.s2.n4 = 2;u.s2.n5 = 3;*p = 4;cout << u.s1.n3 << " " << u.s2.n4 << " " << u.s2.n5 << endl;
}

解析:首先要明白的是共用体的特性,这里sizeof(u)=8,指针p指向的是共用体的初始地址,这个地址可以使s1.n3或者s2.n4,因此如果改变了p所指向地址的值,那么将会同时改变,他们两个的值。
因此本题,输出的结果为:4,4,3

15. 下面哪些算法不能保证得到最优解(当存在解的时候):

A.Digikstra算法
B.Floyd算法
C.贪婪算法
D.遗传算法

此题,众所周知贪婪不一定得到最优解的,经查阅资料认为,遗传算法也不一定能得到最优解,因此,我个人认为此题应为CD(如有错误,欢迎指正).

16. 有一颗二叉树,其前序遍历为abcdefg,可能的中序遍历有:

A. abcdefg
B. gfedcba
C. gabcdef
D. cdefbag

解析:此题不难,需要注意的是两种遍历之间的关系,此题选择ABD

这篇关于深信服2018年实习生校园招聘总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/822083

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解