歌尔声学笔试

1 pwm是什么? 2 usb按照传输速率分哪几种,作用是什么 3 volatile的作用是什么? 4 改错:char *p=“hello”;char *q="world";char *k=strcat(p,q); 最后一道编程题,20分。

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。   USB 1.x(包括1.0,1.1):使用全速模式(FS:12Mb/s)和低速模式(LS:1.5Mb/s)。例如鼠标、键盘就是低速设备运行,而打印机、扫描仪就使用全速设备模式运行存在12M的传输速度瓶颈

USB 2.0将设备之间的数据传输速度增加到了480Mbps,快过USB 1.x的40倍,但是最初的USB2.0的速度只是定义为240Mbps,但是技术队伍通过努力,把速度提高到了480Mbps。

关键字volatile有什么含意 并给出三个不同的例子。  一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量 1.struct和class的区别

从定义上来说,有两点区别:

(1)默认继承权限,如果没有特殊说明,来自Class的继承按照private继承处理;来自struct的继承按照public继承处理。

(2)成员的默认访问权限。Class成员默认为private权限;struct默认为public权限。

2.输出结果题(歌尔和软控都考了)

void main()

{

int a=10,b,c,d;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d: %d, %d, %d\n",b,c,d);

}

10 11 100

总体来说 x++的意义就是将包含x++的语句分成两条,比如说这样:

a = x++;

这条语句实际上可以这么看:

a = x;

x = x + 1;

因为加1的工作逻辑上可以看成是包含x++的语句结束之后执行的。

++x就比较简单了,简单的将其看作为是(x=x+1)就行了,比如说:

a = ++x;

实际上可以看做

a = (x=x+1);

实际代码这么写也可以,没区别。

至于某些不负责任的考试和文章中可能会提到类似i=i++;这样的语句,实际上是不符合c/c++语法的,这是一项未定义操作,undefined behaviour,实际结果编译器可以根据情况自己判断,甚至包括直接报错。

i++和++i都是把i加1,不同的是i++返回值是未加1前的值,++i返回值是加1后的值

3.引用和指针的区别

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;引用本身就是目标变量的别名,对引用的操作就相当于对目标变量的操作。

4.ifconfig的作用(手动启动、观察与修改网络接口的相关参数,包括IP地址以及MTU大小等)

ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。配置网卡的IP地址语法例:ifconfig eth0 192.168.0.1 netmask 255.255.255.0

下列提法中,不属于ifconfig命令作用范围的是 D 。

A 配置本地回环地址

B 配置网卡的IP地址

C 激活网络适配器

D 加载网卡到内核中

5.int main(int argc, char *argv[])

{

struct a1

{

int i1;

int i2;//4

char c1;

char c2;//2

};

struct a2

{

int i3;

char c3;

char c4;

int i4;

};

struct a3

{

char c5;

short s1;

short s2;

char c6;

};

printf("%d,%d,%d\n",sizeof(a1),sizeof(a2),sizeof(a3));//答案是12,12,8

return 0;

}

6.union{int i;char c;long l;}Date;

struct

{

int i1;

Date d;

char c1;

}T;

printf("%d\n",sizeof(T)+max(Date));

具体题目可能记不得了,大体就是这样

7.进程与线程的区别?

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行

8.软件开发中的模型

瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

快速原型模型(Rapid Prototype Model)

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。

通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

增量模型(Incremental Model)

在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成. 增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。

螺旋模型(Spiral Model)

将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

喷泉模型(fountain model)

也称面向对象的生存期模型, OO模型)

喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

智能模型(四代技术(4GL)

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。

混合模型(hybrid model)

过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。

各种模型的优点和缺点

  瀑布模型 文档驱动 系统可能不满足客户的需求

  快速原型模型 关注满足客户需求 可能导致系统设计差、效率低,难于维护

  增量模型 开发早期反馈及时,易于维护 需要开放式体系结构,可能会设计差、效率低

  螺旋模型 风险驱动 风险分析人员需要有经验且经过充分训练

9.死锁的必要的条件,如何避免死锁

1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。

2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放。

3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。

4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,P2,???,Pn}中的P0正在等待一个P1占用的资源;P1正在等待P2占用的资源,……,Pn正在等待已被P0占用的资源。

在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。

10. 输出结果题:

unsigned int i=20;

int j=-30;

if(i+j>0)

printf("Positive!\n");

else

printf("Not Positive!\n");

11.32位操作系统针对的32位的CPU设计

12. 进程有三种状态: C 。

A 准备态、执行态和退出态

B 精确态、模糊态和随机态

C 运行态、就绪态和等待态

D 手工态、自动态和自由态

13. 终止一个前台进程可能用到的命令和操作 A 。

A kill

B <CTRL>;+C

C shut down

D halt

14. 程序改错题,如果错误请改正,如果正确请说出函数的功能(软控)

void *fun(char *src,int len)

{

char dest[1024];

memcpy(dest,src,len);

return dest;

}

15. SPI总线有几根,分别是什么?

MOTOROLA公司的SPI总线的基本信号线为3根传输线,即SI、SO、SCK。传输的速率由时钟信号SCK决定,SI为数据输入、SO为数据输出。

16. 输出结果分析

#include <stdio.h>

class base

{

public:

base(int i);

~base();

private:

int m_i;

};

base::base(int i):m_i(i)

{

printf("step %d\n",i);

}

base::~base()

{

printf("step %d\n",m_i);

}

base base1(5);

void main()

{

printf("step 1\n");

base *a=new base(4);

delete a;

}

17. 有关指针的一些题型,给一个变量a,定义整型变量,指针变量等

18.中断子程序评价

时间: 2024-09-17 14:16:35

歌尔声学笔试的相关文章

DP - tencent2016实习生笔试A

tencent2016实习生笔试A Problem's Link ---------------------------------------------------------------------------- Mean: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数. analyse: 对于这题来说,插入字符和删除字符使其成为回文串,答案是一样的. 首先求s的反串rs,然后对s和rs求最长公共子序列,要删除的字

算法学习 并查集(笔试题目:找同伙)

题目背景太长,记得不清楚,暂参考<啊哈算法>一书,根据笔试题目大意改编如下: 警察正要捉获某地区的犯罪团伙,由于强盗人数过大,想查清楚有几个团伙非常困难. 根据上级指示,需要首先尽快抓获强盗A所在的团伙,这需要掌握 1 所在团伙的人数.先有资料如下: 强盗1 和 强盗2 是同伙 强盗3 和 强盗4 是同伙 强盗2 和 强盗5 是同伙 强盗3 和 强盗2 是同伙 注意,强盗的同伙的同伙也是同伙,问  强盗1 的同伙(不包括1自己)有多少人? 该题形式化表示如下: 每个测试实例首先包括2个整数:N

2015腾讯笔试大题

今天做完腾讯的在线笔试,感觉自己弱爆了,选择题部分考得比较基础,但是考的面比较广,数据结构,计算机网络,算法常识,概率题,C,C++,都有.大题如下: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code).请编写一个函数,使用递归方法生成N位的格雷码,并且保证这个函数的健壮性. 2. 有下图的题解,请用C/C++代码来列出满足下图0-100内的所有答案. 3. 如图所示,系统中有三个进程Producer,Transmitter和Consumer.

腾讯、网易有道和阿里的笔试分享及自我总结

声明:本人Android移动开发岗 腾讯:考的很杂 选择题(25题不定项):考的包括: 编译原理两题, 计算机网络一两题(私网地址), C++若干, IOS开发一两题, 还有二叉树两三题,先后序遍历,求深度 jvm也有一题, 概率论一两题, JavaScript一题, 还有C语言(包括指针数组,数组指针,指针函数之类的)也挺多的 更多的是看程序求输出. 大题: 1,10亿QQ号用Set和Vector两个容器来删除奇数号 2,猴子摘香蕉,一次可以摘一根或两根,求摘50根有几种摘法(斐波那契数列)

58同城2015校招笔试、一面、二面经历

10.18 宣讲 58宣讲时间真是安排的晚...19.30开始,我6.30就到了..整整放了1个小时不重复的视频.....我听完他们CSO对行业和公司的介绍就走了.感觉58可能是o2o的下一个爆发点.感觉蛮有前景的.宣讲会也是和小米的宣讲差不多,过道上都挤满了人这种.我个人还是比较些向往去58的.个人感觉对于O2O,58算是赶了个早集..把最脏最累的活给做了..反而是美团,大众点评这种抓住了热点...当然,未来的大趋势也是O2O,就看58能不能赶上这趟快车了. 10.19 笔试 昨天的唯品会和中

笔试算法题(09):查找指定和值的两个数 &amp; 构造BST镜像树

出题:输入一个已经升序排序的数组和一个数字:要求在数组中查找两个数,这两个数的和正好等于输入的那个数字,输出任意一对数字就可以,要求时间复杂度是O(n): 分析:对于升序排序的数组{-i-j-k-m--},只有可能是i+m=j+k(j和k可能是同一个数),所以可以从两边往中间收缩而忽视其他交叉相加的情况: 解题: 1 void FindSumFactor(int *array, int length, int sum) { 2 int left=0, right=length-1; 3 whil

笔试算法题(08):输出倒数第K个节点

出题:输入一个单向链表,要求输出链表中倒数第K个节点 分析:利用等差指针,指针A先行K步,然后指针B从链表头与A同步前进,当A到达链表尾时B指向的节点就是倒数第K个节点: 解题: 1 struct Node { 2 int v; 3 Node *next; 4 }; 5 Node* FindLastKth(Node *head, int k) { 6 if(head==NULL) { 7 printf("\nhead is NULL\n"); 8 exit(0); 9 } 10 Nod

笔试算法题(07):还原后序遍历数组 &amp; 半翻转英文句段

出题:输入一个整数数组,判断该数组是否符合一个二元查找树的后序遍历(给定整数数组,判定其是否满足某二元查找树的后序遍历): 分析:利用后序遍历对应到二元查找树的性质(序列最后一个元素必定是根节点,从左向右第一个比根节点大的元素开始直到根节点之前的所有元素必定在右子树,之前的所有元素必定在左子树): 解题: 1 bool PostOrderCheck(int *array, int i, int j) { 2 /** 3 * 如快速排序一样,解决小子文件 4 * */ 5 if(j-i+1 ==

C/C++笔试忍法帖04——C/C++语法特性篇

1.Heap与stack的差别 Heap是堆,stack是栈. Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放. Stack空间有限,Heap是很大的自由存储区 C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符. 程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行. 2.In C++, what does "explicit" mean? what does "protected&