当前位置:文档之家› 网关软件工程师基础知识试题.doc

网关软件工程师基础知识试题.doc

网关软件工程师基础知识试题.doc
网关软件工程师基础知识试题.doc

网关软件工程师基础知识试题

BSP部分:

1.内核编程中常常需要用到自旋锁,请简述spin_lock(),spin_lock_irq()和spin_lock_irqsave

O之间的区别,并说明它们的使用场合。

答案:spin」ock():不关闭CPU中断,中断可以打断。主要用于中断上下文,防止多核的情况下,中断临界资源被其它CPU访问。

spinJockJrqO:关闭CPU屮断,屮断和进程都不可以打断。主要用于进程上下文,防.11:进程被1卩断和其它进程访问临界资源。

spin_lock_irqsave():保存中断标志,关闭CPU中断,中断和进程都不可以打断,解锁时恢复中断标志。主要用于进程上下文,防止进程被中断和其它进程访问临界资源。

2.相对于应用空间应用程序的开发,内核开发有很大的不同。请列出它们之间的差异(至少

5点)。

答案:

(1)不可以访问libc;

(2)必须使用GNU toolchain;

(3)缺乏用户空间那样的内存保护机制;

(4)内核只有很小的一个定长的堆;

(5)内核需要支持中断,抢占和多核,盂要时刻注意同步和并发;

(6)使用浮点数很容易出现异常,应尽最少用或者不用;

(7)程序在不同的地址空间执行。

此题为开放题,其它答案合理亦可。

3.简述屮断级联与屮断共享有何异同?并画出硬件连接示意图。

答案:

相同点:都是在同一个中断控制器的引脚上接多个设备。

不同点:中断级联是在中断控制器的引脚上再接一个中断控制器,设备具有不同的中断号;中断共享则是中断控制器的引脚上直接并联多个设备,设备具有相同的中断号。

0:设备

4.写一个宏SWAP(x, y),实现交换所有基本数据类型的值;写一个宏计算数组元素的个数。

答案:

(1)#define SWAP(x, y) do { \

—typeof(x) t = x;

x = y; y = x; \

} while (0)

或者

#define SWAP(x, y) do { \

x A= y; \

y A=x; \

x A= y; \ } while (0)

(2)#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

5.volatile关键字的作用。

答案:

(1)修饰语句块时,防止指令顺序被改变;

(2)修饰变屋吋,防止读写指令被优化。

6.全局变量:

static const int a;

static int b;

static const int c = 5;

(1)

int main ()

{

printff^b = %d\n", b);

rctum 0;

}

执行结果是什么,为什么?

(2) void fund (void)

{

int *p = (int *) &a:

*p = 8;

b = 1 ;

printf(u a = %d b = %d\n", a, b);

}

void func2 (void)

{

static const int d;

int *p = (int *) &d;

funcl(), func2()执行的结果是什么?

(1) b = 0。b被分配到bss段。

(2)fund ()编译出错;func2 () :d = 6

7.用C语言实现将地址为()xB8100()01的32位寄存器置为0x12345678。答案:32位寄存器

的地址都以4字节对齐,不会出现地址0xB8100001 o

*p = 6; printfC^d = %d\n,\ d);

&写一个讦语旬判断一个32位整数能否表示为2的某次方(不能用循环)。答案:int a = 8;

if (a& (—I )==())

yes;

else

no;

9.在32位系统中,

struct A

{

char a;

int b;

short c;

char d;

void *e;

};

#pragma pack(l)

struct B

{

char a;

int b;

short c;

char d;

void *e;

};

#pragma pack()

#pragma pack(4)

struct C

{

char a;

int b;

short c;

char d;

void *e;

}:

#pnigma pack()

请sizeof(struct A), sizeof(struct B),sizeof(struct C)的值。

答案:

sizeof(struct A) = 16

sizeof(struct B) = 12

sizeof(struct C) = 16

10.SPI总线有CLK, MOST, MISO, CS四根线。在SLAVE已经片选上的情况下,假设读SLAVE

ID需要向SLAVE发送一个字节的命令,SLAVE ID为四个字节。请问读SLAVE ID MOS I, MISO分别传输了多少字节的数据。

答案:都是5

11.请简述u-boot 从Nand Flash, Nor Flash 和SPI Flash 启动的流程。

答案:

Nand:上电,CPU通过SoC上固化的程序,将u-boot前4K或者8K加载到SRAM中,并跳转到SRAM中执行。初始化内存,Nand等设备Z后,将整个u-boot加载到内存后,并跳转到u-boot加载地址处执行。

Nor Flash: CPU将Nor Flash映射到地址空间上,CPU跳到Nor Elash映射到的某一地址处执行,初始化内存等设备之示,将整个u-boot加载到内存示,并跳转到u-boot加载地址处执行。

SPI:CPU通过SoC上固化的程序,将一小段特定大小的程序加载到SRAM'p,并跳转到SRAM中执行。初始化内存,SPT等设备Z后,将整个u-boot加载到内存后,并跳转到u-boot 加载地址处执行。

12.MIPS架构上,memory分为四块,各是什么?有何区别?

答案:

kuseg: 0x000 0000 - 0x7FFF FFFF (低端2G):这些地址是用户态可用的地址。在有MMU的机器里,这些地址将一概被MMU作转换。除非MMI;的设置被建立好,这2G 地址是不可用的。对于没有MMU的机器,存取这2G地址的操作与具体机器相关。CPU 具体厂商提供的手册将会提供关于这方面的信息。

kscgO: 0x8000 0000 - 0x9FFF FFFF(512M):这些地址映射到物理地址简单的通过把最高位清零,然后把它们映射到物理地址低段512M(0x0000 0000 - OxlFFF FFFF)。儿乎全部的对这段地址的存取都会通过快速缓存(cache) o因此在cache设置好之前,不能随便使用这段地址。

ksegl: 0xA000 0000 - OxBFFF FFFF(512M):这些地址通过把最高3位清零的方法來映射到相应的物理地址上,与kscgO映射的物理地址一样。但ksegl是非cache存取的。ksegl 是唯一的在系统重启吋能正常工作的地址空间。

kseg2: 0xC000 0000 - OxFFFF FFFF (1G):这段地址空间只能在核心态下使用并且要经过MMU的转换。在MMI?设进好之前,不能存取这段区域。

13.MIPS架构上,如果从Not Flash启动,默认的启动物理地址是多少?可否设置其它地址作

为启动地址?如果能请简要设置方法,如果不能请说明原因。

答案:

OxBFCOOOOO,可否设置启动地址需要看具体芯片是否提供修改启动地址的功能。如果芯片有修改启动地址的功能,在启动前,通过修改硬件,改变上电后跳线的电压來改变启动地址。

14.在linux kernel 中,—init/_exit, —devinit/_devexit 的作用是什么?两组有何区别?

答案:

编译时,把他们修饰的函数放到各口的口定义段中。

_init/_ exit的函数被执行过Z后会被释放。而_devinit/_devexit函数被执行过之后不会被释放。

15.请完成函数get_key,根据NODE成员list的地址,返回NODE成员key的值。比如下面的

例了运行后会打卬“100”。(提示:请注意构成链表的方式)

struct list_head

{

struct list_head *next, *prev;

};

typedef struct {

int key;

struct list_head list;

} NODE;

答案:

#define container(ptr z type, member) \

(type *) ((char *)ptr - (char *) (&( (type *)0)->member))

int get_key(struct list_head *plist)

{

NODE *node;

node = container_of (plist, NODE, list);

return node->key;

}

int main()

{

NODE node = {.key = 100z. list = {&node?丄ist, &node?丄ist}};

printf(吒d\n", get_key(&node.list));

return 0;

)

16.用C语言实现set_reg_bits(??j和set_reg_bit (???),参数自定。

set reg bits 功能:将地址为addr 的register 的bit m 到bitn(m<=n)设置为value (0 <= value < 2n"+1);

set_reg_bit 功能:将地址为addr 的register 的bit m 设置为value (value: 0, 1)。答案:static void inline set reg bits(u32 reg, int from, int to, ul6 bit_val)

{

ul6 val;

val = readw((void *)reg);

val &= ~(((1 ? (to 一from + 1)) - 1) ? from);

val |= bit val << from;

writew(val, (void *)reg);

#define set_reg_bit(reg, bit, val) set_reg_bits(reg, bit, bit, val)

17.GCC编译器在编译时都有哪几个过程。

答案:预编译,编译,汇编,链接。

18.描述LINUX小字符设备驱动的基本编成框架。并编写一个编译它的Makefile,说明其小的

参数。

答案:

要点、:module_init,module_exit,字符设备注册,file_operation,

open(),read(),write(),ioctl(),release()^o

Makefile:

KERNEL PATH = /xxx/xxx

PWD = $ (shell pwd)

all:

make -C $( KERNEL_PATH) -M $(PWD) modules

clean:

make - C $( KERNEL_PATH) -M $(PWD) clean

19.在boot loader中,冇时需要跳到指定的地址上执行。请用C语言实现跳到地址0x80000000

处执行。

答案:

((void (*) (void)) 0x800()0()00)();

或者

typedef void (*func_t) (void);

func_t func = (func_t) 0x80000000;

func();

20.请指出void (^signal (int signo, void (^handler) (int))) (int)返回值和参数的类型, 并用typedef

改写。

答案:

返回值:void (*) (int)

参数:int, void (*) (int)

改写:

typedef void (*func_t) (int);

func_t signal (int signo, func_t handler);

C 语言试题1:

1.

32位系统上给出下面的变量定义:

char str|] = “Hello"; char *p = str ;

请计算sizeof (str )、sizeof ( p )分别是多少? A) 5 1 B) 5 4 C) 6 1

D) 6 4

2. 在双向循环链表中,在p 所指的结点之后插入指针f 所指的新结点,其操作 步骤

() A) p->next=f; f -〉prior 二p; p-> next -〉prior 二f; f->next 二p->next; B) p->next=f; p->next->prior=f; f -〉prior 二p; f->next=p->next;

C)

f->prior=p;

f->next 二p->next;

p-> next=f;

p->

next->prior=f; D) f->prior=p; f->next 二p->next; p-> next->prior=f; p->

next=f;

3. 以下属于非线性数据结构的是:(

A) 数组 B) C)

二叉树 D)

4.

以下程序的输出结果是什么? main () {

int a[5] = {1,2, 3, 4,5}; int *ptr = (int*) (&a+l); printf(z ,

%d %d 〃,*(a+l), *(ptrT)); } A) 2 2 B) 2 1 0

2

5

D)以上均不是

5.

下列代码的输出的内容是

#include main() {

int a,b,c,d; a=10; b=a++; c 二++a;

)

单-向链表 堆栈

d=10*a++;

printfC'b, c, d : %d, %d, %d H , b, c, d);

return 0;

以下语句定义的数据类型是: typedcf int (*tcst) ( float * A) 函数的指针,该函数以两个指向浮点数(float)的指针(pointei*)作为参数

(arguments) B) 整型指针

C) 函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数

(argumen ⑸,并月.函数的返回值类型是整型 D) 以上都不是

7.以下段代码对x 和n 完成什么样的功能(操作)?: int foo ( int x , int n) { int val; val =1; if (n>0)

{

if (n%2 二二 1) val 二 val *x; val = val * foo(x*x , n/2);

}

return val;

}

A) x A n (x 的n 次幕) C) n A x(n 的x 次幕) &设有以下宏定义: #define N 3

#define Y(n) ((N+l)*n)

则执行语句:z=2 * (N+Y(5+l));

A) 48 B) 42 9.有以下程序 main()

char a[]=n programming n , b[]二"language”; char *p],*p2;

A) 10, 12, 120 B) 10, 13, 130

C) 11, 12,

120

D) 11,

12, 130

6. float*);

B) x*n(x 与n 的乘积) D) 以上均不是

后,z 的值为: C) 54

D) 出错

int i;

pl=a; p2=b;

11. 若有序表的关键字序列为(b, c, d, e, f, g, q, r, s, t ),则在二分查找关键字b 的过

程中,先后进行比较的关键字依次为()

12. 以卜叙述中不止确的是:

A ) 函数名属于用户标识符,其起名规则与变量相同

B ) 形参只能是变量

0为保证程序的正确运行,函数屮定义的变量不能与其他函数屮定义的变量 同名 D )函数中定义的变量可以与其他函数中定义的变量同名 13. 有以下程序

int fun (int x,int y,int *cp,int *dp ) {

*cp=x+y; *dp=x-y; main()

}

输出结果是:

A ) gm

B) rg

10.给岀下列递归过程的执行结果 void unknown ( int w ) {

int i; if ( w ) {

unknown

(w-1 ); for ( i =1; i <= w; printf C

\『);

}

}

void main() {

unknown(4); } A) 1

B)

4 4 4 4 2 2 3 3 3 3 3

2 2

3

4 4 4 1

i++ ) printf (〃%d 〃, w);

C) 1

D) 4

1 2 4 3

1 2 3 4 3 2

12 3 4

4 3 2 1

A) f, c, b B) f, d, b C) g, c, b D) g, d, b

for(i=0;i<7;i++)

if(*(p 1 +i)==*(p2+i)) printf (” %c”,*(pl+i)); C) or D) ga

int a, b, c, d;

a=30; b=50;

fun(a,b,&c,&d); printf(M%d,%d n, c, d);

}

输出结果是:

A) 50,30 B) 30,50 C) 80,-20 D) 80,20

14.以卜?不合法的用户标识符是

A) f 2_G3 B)lf C)4d D)_8

15.TCP巫用的流量控制协议是

当路由器接收到源IP地址为10. 0. 1. 25,目的IP地址为192. 168. 1. 36的数据报时,它对该数据报的处理方式为

A)投递到20. 5. 3. 25 B)投递到22. 3. 8. 58

C)投递到192. 16 &1.0 D)丢弃

18.实现从主机名到I P地址映像服务的协议是

A) ARP B) DNS

C) RIP D) SMTP

19.在TCP/IP互联网络中,转发路由器对IP数拯报进行分片的主要目的是

A)提高路由器的转发效率

B)增加数据报的传输可靠性

C)使目的主机对数据报的处理更加简单

D)保证数据报不超过物理网络能传输的最大报文长度

20.为了防止笫三方偷看或篡改用户与We b服务器交互的信息,可以采用

A)防火墙技术B)将服务器的I P地址放入可信站点区

C) S S L技术D)将服务器的I P地址放入受限站点区

1)请说明关键字auto, extern, register, static, volatile 的具体含义。(10 分)

2)改错题:(10分)

有如下代码:

1: char *report( short m, short n, char *p )

2: {

3: int result;

4: char *temp;

5: long nm;

6: int i, k,kk;

7: char name[l 1] = "T&W Company";

&

9: nm = n * m;

10: temp = p == n" ? "null" : p;

11: for( i = 0; i v m; i++)

12: { k++;kk 二i; }

13: if( k == 1 ) result = nm;

14: else if( kk > 0 ) result = 1;

15: else if( kk < 0 ) result = -1;

16: if( m == result) return temp;

17: else return name;

18: }

请指出其屮的错误之处。(可以利用旁边的行号做标注)

3)请从网络的角度,描述一下你打开https://www.doczj.com/doc/779053385.html,的整个过程。(10 分)

4)请描述下linux进程之间通信的方法。(10分)

5)实现以下标准库函数(代码中请勿使用任何库函数调用)(10分)

strcpy

6)一个链表的结点结构(10分)

struct node

{

int data;

stmct node *next;

}

1?已知链表的头结点head,写一个函数把这个链表逆序。

2.已知两个链表headl和head2各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)

C语言试题2:

1.局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用”::“ 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变暈,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内

2.如何引用一个己经定义过的全局变量?答:extern

可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。

3.写出程序运行结果

int sum(int a)

{

auto int c=0;

static int b=3;

c+=l;

b+=2;

return (a+b+C);

}

void main()

{

int I;

int a=2;

for(1=0;I<5;I++)

{

printf(”%d J', sum(a));

}

}

4.写出下列程序结果

int a[3];

a[0]=0; a[l]=l; a[2]=2;

int *p z *q;

P=a;

q=&u [2];

则a[q-p]=?

4?回答下面的问题(6分)

(1)?

Void GetMemory(char **p, int num){

*p = (char *)malloc(num);

}

void Test(void){

char *str = NULL;

GetMemory(&str, 100);

strcpy (str, f,hello n ); printf (str);

}

请问运行Test函数会有什么样的结果?

答:输出''hello"

(2)?

void Test(void){

char *str = (char *) malloc(100);

strcpy (str, AX hello z,);

free(str);

if (str != NULL) {

strcpy (str z ''world");

printf (str);

}

}

请问运行Test函数会有什么样的结果?

答:输出''world"

(3)?

char *GetMemory(void)

{

char p [ ] = ,f hello world11;

return p;

}

void Test(void)

{

char *str = NULL;

str = GetMemory();

printf(str);

}

请问运行Test函数会冇什么样的结果?

答:无效的指针,输出不确定

4

(1)已知链表的头结点head,写一个函数把这个链表逆序Node * ReverseList (Node *head) //链表逆序

{

i f ( head == NULL I | head->next == NULL ) return head;

Node *pl = head ;

Node *p2 = pl->next ;

Node *p3 = p2->next ; pl->next = NULL ;

while ( p3 != NULL )

p2->next = pl ;

pl = p2 ;

p2 = p3 ;

p3 = p3->next ;

}

p2->next = pl ;

return head ;

}

(2)已知两个链表headl和head2各自冇序,请把它们合并成一个链表依然冇序。(保留所有结点,即便人小相同)

Node * Merge(Node *headl , Node *head2)

{

if ( headl == NULL)

return head2 ;

if ( head2 == NULL)

return headl ;

Node *head = NULL ;

Node *pl = NULL;

Node *p2 = NULL;

if ( headl->data < head2->data )

{

head = headl ;

pl = headl->next;

p2 = head2 ;

else

head = head2 ;

p2 = head2->next ;

pl = headl ;

}

Node *pcurrent = head ;

while ( pl != NULL && p2 != NULL) {

if ( pl->data <= p2->data )

pcurrent->next = pl ; pcurrent = pl ;

pl = pl->next ;

}

else

{

pcurrent->next = p2 ;

pcurrent = p2 ;

p2 = p2-〉next ;

}

}

if ( pl != NULL )

pcurrent->next = pl ;

if ( p2 != NULL )

pcurrent->next = p2 ;

}

(3)已知两个链表headl和head2各白有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。

答案:

Node * MergeRecursive(Node *headl , Node *head2)

{

if ( headl == NULL )

return head2 ;

if ( head2 == NULL)

return headl ;

Node *head = NULL ;

if ( headl->data < head2->data )

{

head = headl ;

head->next = MergeRecursive(headl->next, head2);

}

else

{

head = head2 ;

head->next = MergeRecursive(headl r head2->next);

}

return head ;

C语言试题3:

9 ?执行下述程序的输出结果是ABCDEFCDEFEF 。

#include

char b[]="ABCDEF n;

main ()

{

char *bp;

for (bp=b;*bp;bp+=2)

printf(n%s n z bp);

printf (n\n H);

}

10,实现strcpy函数

char* strcpy (char* dest, const char* src)

{

assert((dest != NULL) && (src != NULL));

char* address = dest;

while (1 \0 * ! = (*dest++ = *src++));

return address;}

11,在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当屮

再找最小的少第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。选择排序是不稳定的。算法复杂度0 (n2) -- [n的平方]

void select_sort(int *x z int n)

{

int i, j f min, t;

for (i=0; i

min = i; /★假设当前下标为i的数授小,比较后再调整★/

for ( j = i + l; j

if (* (x+ j) < *(x+min)) {

min = j; /★如果后Ifli的数比前面的小,则记下它的下标★/

}}

if (min ! = i) /*如果min在循环中改变了,就需要交换数据*/

{

t = * (x+i);

* (x+i) = * (x+min);

*(x+min) = t;

}

}

}

编程题:

12,将一个字符串逆序

答案:

#include

#include

char *strconv (char *p)

{

int length = strlen (p);

char *ptr = p;

char *ptr_l = p + length -1; while (ptr < ptr_l)

{

char c = *ptr;

*ptr = *ptr_l;

*ptr_l = c;

++ptr;

一ptr_l;

}

return p;

}

int main()

{

char str [ ] =l,abcdef 1234 n ;

char *p;

p = strconv(str);

printf("%s"z p);

return 1;

}

13、将一个链表逆序

Typedef struct linklist

{

struct linklist *next;

} LinkList;

LinkList ^reverse(LinkList *head)

LinkList *pl,*p2 = NULL,*p3 = NULL;

if(head == NULL || head->next == NULL) return head;

pl = head->next;

while(pl!=NULL)

p3 = pl->next; pl->next = p2;

p2 = pl;

pl = p3;

}

head->next = p2;

// head = p2;

return head;

}

14、计算一个字节里(byte)里面有多少bit被置1

#include

int comb(const int c)

{

int count = 0;

int i = 0;

int cc = c;

while(i++<8)

{

if((cc)==1)

{

count++;

}

CC = CC>>1;

}

return count;

}

int main()

{

const int c = Oxcf;

print f (*' %d\n" r comb (c));

return 1;

}

15、搜索给定的字节(byte)

16、在一个字符串中找到可能的最长的子字符串

#include

#include

#include

char *commans tring (char shorts tiring [ ] , char longs tring []) { int i,j;

char ^substring = malloc(256);

if (strstr (longstring,shortstring) !=NULL)

return shortstring;

for(i=strlen (shortstring)-1;i>0;i ——)

for ( j = 0; j<=s七门旳心!!。!?tstring)-i; j + + )

{

memcpy(substring,&shortstring[j ] f i); substring[i] = 1\01 ;

if (strstr (longstring,substring) !=NULL)

return substring;

}

}

return NULL;

}

void main(void)

{

char *strl = n aocdfe n;

char *str2 = n pmcdfa f,;

char *comman = NULL;

if (strlQn(stri)>strlen(str2))

comman= commanstring(str2z strl);

else

comman = commanstring(strl,str2);

printf ("the longest comman string is : %s\n f,, comman);

17、字符串转换为整数

#include

#include

void reverse(char s[])

{ //字符串反转

int c f i=0 z j;

for{j=strlen(s)-l;i

{ c=s[i];

s[i]=s[j];

s[j]=c;

i + + ;

}

}

void IntegerToString(char s[],int n)

{ int i=0z sign;

if ( (sign=n)<0)//如果是负数,先转成正数

n=-n;

do //从个位开始变成字符,直到最高位,最后应该反转

{ s [i + + ]=n%10+*0 *;

}while((n=n/10) >0);

//如果是负数,补上负号

if (sign<0)

s[i++]=,-1;

s[i] = ,\0,;//字符串结束

reverse (s);

}

void main()

{ int m;

char c [ 100];

m =215;

IntegerToString(c,m);

printf ("integer = %d string = %s\n n, m z c); }

18、整数转换为字符串

#include

#include

int Atoi(char str[])

软件工程师职业分析

软件工程师职业分析 首先什么是软件工程师?软件工程师主要进行软件前期的项目需求的分析,然后对项目进行风险评估并试图解决这些风险,然后开始进行软件的开发,后期对软件的进度做相关的评估。软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。这些岗位的分工不同,职位和/或级别不同,但工作内容都是与软件开发生产相关的。 软件工程师是IT行业需求量最大的职位,稳居IT行业职位需求TOP10的第一位(第二位是高级软件工程师)。软件工程师的技术要求是比较全面的,除了最基础的编程语言(C语言/C++/JAVA等)、数据库技术(SQL/ORACLE/DB2等)、.NET平台技术、C#、C/S B/S程序开发,还有诸多如JAVA SCRIPT、AJAX、HIBERNATE、SPRING、J2EE、WEB SERVICE、STRUTS等前沿技术。 除此之外,关于网络工程和软件测试的其他技术也要有所涉猎,以利于操控全局。软件工程师可谓是软件项目开发的掌舵者。一名优秀的软件工程师应当具有较强的逻辑思维能力,对于技术的发展有敏锐的嗅觉。虽然要求技术全面,但无须偏执于门门技术都精通,任何软件工程师都有自己的技术特长和偏向,对于自己手中的技术,可有精通-掌握-熟悉-了解之分,根据工作需要和职业发展的具体情况来划分。 从最新的数据看出目前软件行业成为目前最热的行业之一,3G工程师、嵌入式工程师、Java软件工程师、. net软件工程师的开发前景怎么样,成为我们即将毕业的大学生们最关心的问题,下面笔者就从这四个方面分析软件开发工程师的就业前景,参考来源《2013-NIIT软件行业分析》; 3G工程师就业前景分析:中国被世界公认为全球最大的3G移动市场,但是,3G相关的人才却严重失调。专业从事3G应用软件开发从业人员不足千人,据工信部预测,仅2010年,中国3G人才市场缺口就在100万以上,其中3G软件工程师缺口就在50万左右。 3G人才短缺现状,使得3G行业已经成为新的高薪行业,基于3G软件开发人员变得格外抢手。人力资源专家表示,3G软件开发是未来几年最热门和最受

软件工程师面试问题总结归纳及答案

面试中常见的问题 1、请你自我介绍一下你自己, 回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、 工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能 否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最 积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习 无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得 合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”。企业喜欢有礼貌的求职者。 2、你觉得你个性上最大的优点是什么?回答提示:沉着冷静、条理清楚、立场坚定、顽强向上。乐于助人和关心他人、适应能力和幽默感、乐观和友爱。 3、说说你最大的缺点?回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于追求完美”,有的人以为这样回答会显得自己比较出色,但事实上,他已经岌芨可危了。企业喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,突出优点的部分。企业喜欢聪明的求职者。 4、你对加班的看法?回答提示:实际上好多公司问这个问题,并不证明一定要

加班。只是想测试你是否愿意为公司奉献。 回答样本:如果是工作需要我会义不容辞加班。我现在单身,没有任何家庭负担,可以全身心的投入工作。但同时,我也会提高工作效率,减少不必要的加班 5、你对薪资的要求? 回答提示:如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求聘的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱。他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。 回答样本一:“我对工资没有硬性要求。我相信贵公司在处理我的问题上会友善合理。我注重的是找对工作机会,所以只要条件公平,我则不会计较太多回答样本二:我受过系统的软件编程的训练,不需要进行大量的培训。而且我本人也对编程特别感兴趣。因此,我希望公司能根据我的情况和市场标准的水平,给我合理的薪水。 回答样本三:如果你必须自己说出具体数目,请不要说一个宽泛的范围,那样你将只能得到最低限度的数字。最好给出一个具体的数字,这样表明你已经对当今的人才市场作了调查,知道像自己这样学历的雇员有什么样的价值 6、在五年的时间内,你的职业规划? 回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被

软件测试工程师笔试题及答案

测试工程师笔试题 一、计算机知识(30分) 1、在Linux系统中,一个文件的访问权限是755,其含义是什么 参考答案: 755表示该文件所有者对该文件具有读、写、执行权限,该文件所有者所在组用户及其他用户对该文件具有读和执行权限。 2、Linux中,如何从root用户切换到普通用户 参考答案:su su user1 切换到user1,但切换后的当前目录还是root访问的目录 su – user1 切换到user1,并且当前目录切换到user1的根目录下(/home/user1/) 3、简述一下C/S模式和B/S模式的区别 参考答案: c/s 是客户端/服务器架构 b/s 是浏览器/服务器架构 C/S模式有以下特点: S模式将应用与服务分离,系统具有稳定性和灵活性 S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性 3.由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快 4.在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂 B/S模式有以下特点: 1.系统开发、维护、升级方便 每当服务器应用程序升级时,只要在服务器上升级服务应用程序即可,用户计算机上的浏览器软件不需要修改,系统开发和升级维护方便 S模式具有很强的开放性 在B/S模式下,用户通过通用的浏览器进行访问,系统开放性好 S模式的结构易于扩展 由于Web的平台无关性,B/S模式的结构可以任意扩展,可以从包含一台服务器和几个用户的小型系统扩展成为拥有成千上万个用户的大型系统 4.用户使用方便 B/S模式的应用软件都是基于Web浏览器的,而Web浏览器的界面是类似的。对于无用户交换功能的页面。用户接触的界面都是一致的,用户使用方便 4、Windows操作系统中PATH环境变量的作用是什么 参考答案: PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。 5、TCP和UDP有什么区别 参考答案: TCP-有连接,所以握手过程会消耗资源,过程为可靠连接,不会丢失数据,适合大数据量交换UDP-非可靠连接,会丢包,没有校验,速度快,无须握手过程

软件开发工程师就业前景如何

软件开发工程师就业前景如何 软件开发工程师是从事软件开发相关工作的人员的统称。软件开发工程师也分很多种,比如3G软件开发工程师,android软件开发师,Java开发工程师等。这些工程师的前景又如何呢? 3G软件开发工程师 3G人才短缺现状,使得3G行业已经成为新的高薪行业,基于3G软件开发人员变得格外抢手。人力资源专家表示,3G软件开发是未来几年最热门和最受欢迎的职业之一。根据前程无忧网发布的薪资报告,具有10年工作经验的高级嵌入式软件工程师年薪在30万元左右。即使是初级的嵌入式软件开发人员,平均月薪也在5000元左右,中高级的嵌入式软件工程师月薪平均已超过万元,而且随着3G应用的进一步深入发展,3G软件研发人才的薪水还会进一步水涨船高!据计世资讯发布的相关研究报告称,估计国内3G人才缺口将达到50万人以上。 android软件开发工程师 Android工程师是指从事Android移动应用操作系统、游戏和各种Android 平台功能的应用、开发和测试的技术人员。以手机开发为主要对象,包括但不限于手机操作系统、手机游戏、手机其他多种功能的开发和优化人员。Android 工程师是移动应用开发者,希望将自己的应用移植到该平台上或者在该平台上开发应用。 随着Android平台的扩张,引发了Android人才荒,2011年移动开发人才需求几十万,未来人才需求缺口将达百万。 Java软件开发工程师

Java软件工程师的未来发展方向大致分为两类: 一是成为管理人员,例如产品研发经理,技术经理,项目经理等; 二是继续他的技术工作之路,成为高级软件工程师、需求工程师等。 Ios软件开发工程师 依据51job前程无忧数据,软件及IT工程师在长达10年时间内一直占据着国内众多职业岗位平均工资水平的前茅,基于iPhone开发的岗位平均薪酬比传统软件开发岗位高出50%以上的水平,移动互联行业公司为了吸引留住人才除了提供保险、休假、灵活作息时间、优质办公环境等福利外更有股权,期权分红吸引高端求职者。

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

Java软件开发工程师笔试题(答案)

Java工程师笔试题 一、填空题(本大题10小题,每空1分,共20分)。 1.Java语言的三大特性即是: 继承、封装、多态。 2.在Java中,char 型采用____unicode_______编码方案,这样,无论是中文字符还是英文字符,都是占用__2___个字节的内存空间。 3. 形式参数指的是方法被__定义____ 时的参数行,实际参数是方法被__调用__ _ 时所传递进去的变量或值。 4.JSP内置对象中,application对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session 对象则是每个客户专用的。 5.如果想把一个对象写入一个流,那么这个类就必须实现Seralizable 接口。 6.程序中实现多线程的方法有两种:继承Thread类和实现___Runable _ 接口。 7.多线程中,可以通过调用相应的setPriority() 方法来修改一个线程的相对优先级。 8.面向对象编程的五大设计原则,分别是单一职责、开放封闭、 里氏替换、依赖倒置、接口分离 9.通过Ajax,客户端获取的数据主要有两种类型:文本型和xml 10.Socket通常也称为套接字,用于描述__ ip 和_ _接口 二、选择题(本大题20 小题,每小题2分.共40分)。 1.在JA V A中,如果父类中某些方法不包含任何逻辑,并且需要由子类重写.应该使用( )关键字来声明父类的这些方法: A) final B) static C) abstract D) void 2.在JA V A中,已定义两个接口B和C,要定义一个实现这两个接口的类,以下语句正确的是()。 A) interface A extend B,C B) interface A implements B,C C) class A implements B,C D) class A implements B, implements C

软件工程师的薪酬及发展前景

软件工程师的薪酬及发展前景 对于打算学习或者转行IT行业的人,最关键软件工程师的薪酬待遇和任职要求。 软件工程师是整个IT行业中基础岗位。根据开发进度和任务分配,完成相应模块软件的设计、开发、编程任务;进行程序单元、功能的测试,查出软件存在的缺陷并保证其质量;进行编制项目文档和质量记录的工作;维护软件使之保持可用性和稳定性。软件开发是一个系统的过程,需要经过市场需求分析、软件代码编写、软件测试、软件维护等程序。软件开发工程师在整个过程中扮演着非常重要的角色,主要从事根据需求开发项目软件工作。如某公司想实现办公自动化,需要专门的软件进行资源整合,该公司的软件开发工程师就可以开发相关办公软件。 一般要求大专以上学历,两年以上工作经验,熟悉各类相关的编程语言和操作环境。熟悉Windows平台下的应用软件开发;精通C/C++、Visual Basic等编程语言,2年以上编程经验;熟悉MS SQL数据库,了解SQL语句以及ODBC编程,并具有实际开发经验;有一定网络编程经验,熟悉TCP/IP等网络协议;熟悉设计思想,了解软件工程规范;精通编译原理者优先;熟悉COM/DCOM,有开发OPC Server经验者优先;英语能力要求较高,能够熟练阅读并理解英文技术资料;有较强的学习和接受新事物的能力。如今,日资企业在华外包产业的扩张,精通日语的软件开发人才更为紧俏。 软件工程师的薪资普遍在7k—12k之间,一些经验丰富、技术牛的,和基础薄弱的另当别算。 北大青鸟兰州优越校区的教学注重学员的项目实训,毕业学员普遍拥有1.5—2年的项目经验,学院推荐就业,所以在经验及就业方面,不用担心。 更多有关软件工程问题请点击咨询。

软件工程师考试大纲

一、考试说明 1.考试要求: (1) 掌握数据表示、算术和逻辑运算; (2) 掌握相关的应用数学、离散数学的基础知识; (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识; (5) 熟练掌握常用数据结构和常用算法; (6) 熟悉数据库、网络和多媒体的基础知识; (7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言; (8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识; (9) 熟悉掌握软件设计的方法和技术; (10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识; (11) 了解信息化、计算机应用的基础知识; (12) 正确阅读和理解计算机领域的英文资料。 2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。 3.本考试设置的科目包括: (1) 计算机与软件工程知识,考试时间为150分钟,笔试; (2) 软件设计,考试时间为150分钟,笔试。

二、考试范围 考试科目 1.计算机科学基础 1.1 数制及其转换 二进制、十进制和十六进制等常用制数制及其相互转换 1.2 数据的表示 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)非数值表示(字符和汉字表示、声音表示、图像表示) 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码) 1.3 算术运算和逻辑运算 计算机中的二进制数运算方法 逻辑代数的基本运算和逻辑表达式的化简 1.4 数学基础知识 命题逻辑、谓词逻辑、形式逻辑的基础知识 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分) 排列组合、概率论应用、应用统计(数据的统计分析) 运算基本方法(预测与决策、线性规划、网络图、模拟) 1.5 常用数据结构 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作 Hash(存储地址计算,冲突处理)

软件工程师笔试试题(Java)库及答案

软件工程师笔试试题(JAVA) 一、填空题 (10分) 1.执行下列代码后的结果是什么? int x,a=2,b=3,c=4; x=++a+b+++c++; 2.包包含了Collection的接口和类的API 3.main方法的声明格式包括 4.下列程序中构造了一个SET并且调用其方法add(),输出结果是 public class A{ public int hashCode(){return 1;} public Boolean equals(Object b){return true} public static void main(String args[]){ Set set=new HashSet(); set.add(new A()); set.add(new A()); set.add(new A()); System.out.println(set.size()); } } 5.下列程序的运行结果是 class A{ class Dog{

private String name; private int age; public int step; Dog(String s,int a) { name=s; age=a; step=0; } public void run(Dog fast) { fast.step++; } } public static void main (String args[]){ A a=new A(); Dog d=a.new Dog("Tom",3); d.step=25; d.run(d); System.out.println(d.step); } } 二、选择题 (20分)

软件工程师面试试题

软件工程师面试试题 姓名: 1、全局变量和局部变量的概念和不同 作用域为整个程序运行空间的变量为全局变量。 作用域为某个函数或复合语句内部的变量为局部变量。 两者作用域不同,所在物理空间申请和分配方式不同。 使用原则:能用局部变量的最好不要用全局变量,以减少模块间的耦合度。2、static类型变量的概念 静态变量是在编译时就分配物理空间的变量。主要用于全局物理空间申请以及函数内部用于独立函数本身存在的应用场合。 3、简述获取双精度浮点数(double)每个字节数据的操作方法 使用字节指针强制转换连两存放的地址。 Double dblTemp = 0.0; Byte * pByte = (byte *)(&dblTemp); 4、在C++中,new和delete分配的内存块为何需要成对使用 两者实际调用的是malloc和free,如果不成对使用,则造成内存泄漏。 5、举例说明数据的二进制表示方式和字符型表示方式 以数据文件为例: Fprintf(f, “%d”, data);//字符形 Fwrite(&data, sizeof(int),1,f);//二进制形

6、头文件中使用#ifndef/define/endif的优点? 防止嵌套重复定义 7、如何向一个窗口发消息,写出windows API。 首先获取一个窗口句柄,可以使用枚举所有窗口的方式(EnumWindows); 使用API函数发送消息; 例如向一个按钮发送点击消息: SendMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, 0x00100019) 8、#include < filename.h >和#include “filename.h”有什么区别? 搜索范围不同。 前者只在编译环境制定的INCLUDE路径范围内搜索; 后者增加对当前目录的搜索。 9、软件编程中,为了便于阅读、记忆和使用,对变量名、数组名、结构体名、 联合体名、函数名等的命名规则简述 变量名:类型加名词或修饰词,例如:double dblTemp;定义一个双精度的临时变量。 数组名:类型加名词复数形式,例如char * strNames[100],定义一个字符串数据结构体:一般定义为类型,结构名为下划线开头,类型名大写。例如:Typedef struct _MyStruct{ Int iAge; … }MYOBJECT; * LPMYOBJECT;

软件开发工程师面试题(基础知识)

.NET开发人员试题(综合) 1、用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的 关系以及为什么要这样分层? 2、软件开发过程一般有几个阶段?每个阶段的作用? 3、您对编程的兴趣如何?工作中遇到不懂的问题是怎样去解决的?您一 般怎样去提高自己的编程水平? .NET开发人员试题(基础) 1、请你说说.NET中类和结构的区别? 答:结构是值类型,在堆栈上分配地址,所有的基类型都是结构类型,如 System.int或System.string,不能被继承 类是引用类型(new),可以被继承,在堆上分配地址,堆栈的执行效率要比堆的执行效率高,但堆栈的资源有限, 2、死锁的必要条件?怎么克服? 答:系统资源不足,资源分配不当,一个资源每次只能被一个进程使用,一个资源请求资源时,而此时这个资源阻塞,且对已获得的资源不放 3、接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以 继承实 体类? 答:接口是可以继承接口;抽象类是可以实现接口;抽象类可以继承实体类,只要实体类有明确的构造函数. 4、构造器 Constructor是否可以被继承?是否可以被Override? 答: Constructor不可以被继承,因此不能被重写(Override),但可以被重载(Overloading) 5、当一个线程进入一个对象的方法后,其它线程是否可以进入该对象的 方法?

答:不可以,一个对象的方法只能由一个线程访问 6、C#是否可以对内存直接进行操作? 答:可以,因为可以使用指针 7、数组有没有Length()这个方法?string有没有这个方法?8、谈谈final,finally,finallize的区别? 答:final用来申明属性、方法、类,表示属性不可变,方法不可以被覆盖,类不可以被继承 Finally是异常处理语句结构,总是执行 Finallize是object类一个方法,在垃圾回收机制中执行的时候会被调用被回收对象的方法 9、C#中委托是什么?事件是不是一种委托? 答:委托是一种安全的类似于函数指针,但比指针安全,它可以把方法作为一个参数传递给另一个方法,可理解为指向函数的引用,事件是一种消息机制,是一种委托,委托不带方法体。 10、Override, Overload,的区别? 11、概述反射、序列化和反序列化?12、UDP和TCP连接有和异 同?13、进程和线程分别该怎么理解? 14、ASP。NET页面之间传递值的几种方式? 15、a=10,b=15在不使用第三方变量的前提下,把a,b的值互换。 答:a=b+(b=a)*0; 16、请简述面向对象的多态的特性及意义? 17、Session喜欢丢值且占内存,Cookies不安全,请问用什么办法替代这两种方法? 18、try{}里有一个return语句,那紧跟在这个后边有个finally{}里的代码会不会被执行,什么时候执行? 20、求当前日期所在的周的起止日期。 答:select sysdate-to_char(sysdate, 'D ')+1 as起始日 期,sysdate+7-to_char(sysdate, 'D ') as 中止日期 from dual 21、c#中的&符号与&&符号有什么区别?22、函数和存储过程的区别?

软件工程师应聘人员笔试题

试卷 姓名:日期: 1.填空: (1)面向对象的语言具有________性、_________性、________性。 (2)能用foreach遍历访问的对象需要实现________________接口或声明________________ 方法的类型。 (3)列举https://www.doczj.com/doc/779053385.html,中的五个主要对象_______________、_____________、_______________、 _______________、_________________。 (3) 并简述https://www.doczj.com/doc/779053385.html,中的五个主要对象各自的功能,列举各功能之间的工作关系: 1:2:3:4:5:关系: 2.选择题: (1)下面那一个不能作为C#中类修饰符?( ) A) new B) public、private C)protected、internal D) override E)abstract、sealed (2).NET 框架中,File对象的OpenText方法,将返回一个:() A)StreamReader对象 B)StreamWriter对象 C)Stream对象 D)File对象 (3)下面那一个不是C#中方法的参数的类型( ) A)值类型B)引用型C)输出型D)数组型E)代理型 (4)接口可以包含一个和多个成员,下面哪个选项不能包含在接口中 A)方法、属性B)索引指示器C) 事件D)常量、变量 (5)接口不能通过()来实现 A)类B)结构C)方法 (6)net依赖以下哪项技术实现跨语言互用性?( ) A.clr B.cts C.cls D.ctt (7)开发C#程序的集成开发环境是_________。 A、Visual https://www.doczj.com/doc/779053385.html, B、IDE C、FRAM D、Common Language Runtime (8) 以下叙述正确的是:(多选) A. 接口中可以有虚方法。 B. 一个类可以实现多个接口。 C. 接口不能被实例化。 D. 接口中可以包含已实现的方法。 (9) 从数据库读取记录,你可能用到的方法有:(多选) A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader (10)从层次结构来看,.NET Framework包含以下三个主要部分_____。(多选) A、公共语言运行库(CLR) B、Web应用程序(https://www.doczj.com/doc/779053385.html,) C、统一编程类(.NET Framework 类库) D、Microsoft 基础类 E、Windows 基础类 3. ASP。NET与ASP相比,主要有哪些进步? https://www.doczj.com/doc/779053385.html,的错误处理机制是什么?

软件工程师笔试题目

软件工程师笔试题目 (考试时间:60分钟,满分100分) 1、请简要描述TCP/IP参考模型和OSI参考模型。(10分) 2、简述如下物联网设备Wi-FI、Bluetooth、ZigBee、RFID、NB-IoT的各自特点。(10分) 3、编程实现如下运算:1!+ 2!+ 3!+ ……+ 17! + 18! + 19! + 20!。(15分) 4、假设有个字符数组A,有10个元素,请对这10个元素进行从小到大排列。(10分)

5、假定x=9999,求下面函数的返回值(10分) int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 6、对整型数组a[10]输入10个元素,然后用指针方式依次输出各元素值。(15分) 7、在SQL server上创建名为XuGuang的数据库,然后创建WCM730Q的列表,第一列MAC address为主键,第二列为VID_PID,第三列为BT_FW,第四列为Staff_No. (10分) 8、linux基础命令填空(10分) (1)获取Kernel版本信息的linux命令是____________ (2)实现一个新建文件夹功能的linux命令是____________ (3)用来查看和配置网络接口(网卡)的linux命令是____________ (4)把文件从A路径拷贝到B路径的linux命令是____________ (5)使用vim对文档完成修改后,实现保存退出的功能的命令是____________ 9、请用英文写作,描述下个人基本信息、兴趣爱好、专业技能、职业规划等(10分)(请背面作答)

ERP工程师就业前景及要求

ERP就业前景 职业描述:ERP人才是指从事ERP软件开发、维护或项目实施,使ERP软件产品在企业经营管理中得以成功应用的相关人才。ERP作为一种当前在全球范围内应用最广泛、最有效的一种企业信息化管理方法,在跨国集团企业早已被广泛使用,如今正在被越来越多中国企业所接受和采用,特别是第十五届五中全会提出了" 以信息化带动工业化,发挥后发优势,实现社会生产力的跨越式发展。" 的指导纲领之后,信息化作为一项基本国策受到国家的非常重视和大力推广。目前,ERP成为企业获取利润的最佳方式,并且ERP专业人才在社会发展中已经成为一种新兴职业,。 就业前景:中国是世界上最具潜力的市场。信息化的高速发展推动了市场对ERP人才的更大需求。各大从事企业信息化软件开发的企业,以及实施ERP软件的企业对ERP各类人才有大量需求。而据权威部门统计,知名公司ERP 顾问的缺口多达20多万且此现象还会长期存在;而普通的ERP应用人才更是需要1500-2300万人,将成为中国就业人数较多的行业和热门职业。 就业方向:ERP人才主要在三个方向就业,一是到应用ERP软件的企业就职,提升企业的软件使用效益,如应用ERP企业的内部咨询人员等,被称为“内部咨询”;二是到软件公司就职,从事软件实施工作,负责软件研发、测试、企业咨询实施等,职位有软件工程师、技术支持、实施顾问等,称为“外部咨询”;三是自己。 薪酬待遇:从事ERP管理工作的人员,薪金非常可观。一般企业内部咨询的年薪起薪约在2 万元以上,有经验的ERP管理工作人员工资通常高于企业其他员工几倍;就外部咨询顾问而言,高端人才身价不菲。本科毕业生一般起薪2000-3000元,工作数年成为高级顾问或者资深顾问后,薪酬会相当可观。而ERP咨询经理年薪可达40-60万元,大公司的ERP实施顾问年薪在20-30万元左右,小型公司的ERP实施顾问年薪在10万元左右。知名企业的顾问薪酬甚至按照“小时”计算。在未来几年里,ERP顾问的身价、行情会一直看涨,年薪几十万甚至上百万也不足为奇。随着我国信息化建设的深入,高级的ERP管理人才缺口不断扩大,这也是造成ERP管理人才的薪资在各行业中增长幅度最快,使ERP管理咨询师成为最灵活的金领职业之一。 从业条件:要求ERP从业人员不仅要具备过硬的组织协调、分析判断、开拓创新能力,而且要有特殊的素质和气魄。一名优秀ERP高级人才的不但要懂IT ,还要会管理,熟悉行业,更重要的是要有丰富的实施经验。 怎样才能成为ERP工程师 1.精通管理,包括销售\生产\采购\财务\成本\,如果不了解这些,无法针对这些管理实践进行深入的开发和推广,自己不懂如何教别人懂啊. 2.程序开发,目前的ERP软件开发工具不同,无法说你要学习哪种,但是数据库软件一定要学,SQL和ORACLE中选一种.SQL是中小型,ORACLE是大型. 3.资质认证不清楚,但是系统工程师的前景不如实施专家,你自己选吧 ERP工程师分为两种: 一种是需要开发技术,进行软件的二次开发以及后期的升级 一种是ERP实施顾问,这种职业目前还是挺有发展前途的,不过ERP实施顾问平常要从事很多东西,也要懂很多:对中国ERP市场,已经企业管理思想要有比较深刻的认识,有比较深的管理理念,协调部门进行日常的业务流程管理,其次要对软件,已经数据库有一定的基础,负责日常新人的培训工作,还有数据库维护,以及数据分析 如果你想从事这行业,首先你的计算机技术是无庸置疑的,但是你得加强你的管理方面的知识,跟管理有关的东西都得学,比如人力资源管理,供应链管理,生产管理等等,还有财务上要有一定的基础,多学学财务会计吧

软件工程师经典笔试题IT笔试题

软件工程师经典笔试题IT笔试题 1. 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 答案:#define SECONDS_PER_YEAR(60*60*24*365)UL 应该意识到表达式将使一个16位机的整形数溢出,因此要用到长整型符号L,表达式中UL 表示无符号长整型。 2. 写一个“标准”宏MIN,这个宏输入连个参数并返回较小的一个。 答案:#define MIN(A,B) ((A)<=(B)?(A):(B)) 懂得在宏中小心的吧参数用括号扩起来 3. sizeof 的一些考察 char* ss1=”0123456789”; char ss2[]=”0123456789”; char ss3[100]=”0123456789”; int ss4[100]; char q1[]=”abc”; char q2[]=”a\n”; char* q3=”a\n”; 答案:ss1是一个字符指针,指针的大小是一个确定的值,就是4,sizeof(ss1)=4; ss2是一个字符数组,这个数组最初的大小未定,填充值是“0123456789”,一个字符占一位,再加上隐含的“\0”一共是11位。 ss3是一个字符数组,这个数组开始预分配100,所以它的大小是100位。 ss4是一个整型数组,但是每个整型变量所占空间是4,所以它的大小一共是400位。 q1与ss2类似,占4位。Q2里面有一个“\n”,“\n”算作一位,加上隐含的,大小一共是3位。Q3是一个字符指针,指针得大小是一个定值,就是4. 4.What is the output of the following code? #include using namespace std; class A {}; class A2 {char d,e;}; struct B{}; struct C{ char x,y;}; struct D{int x,y;}; main() { cout<

软件工程师笔试面试题

C语言: (1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种 情况下,可以将所有包含文件预编译为一个预编译头。 预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令吗,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。c编译系统在对程序进行通常的编译之前,先进行预处理。c提供的预处理功能主要有以下三种:1)宏定义2)文件包含3)条件编译。 (2)char* const p, char const* p,const char*p 上述三个有什么区别? 答案: char * const p; //常量指针,p 的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p;//和char const *p等价 (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < <( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4 是数组变量,它们有各自的内存空间;而str5,str6,str7,str8 是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof 用法有问题吗? void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母 { for( size_t i=0;i

JAVA_软件工程师公司笔试题

一、 1.Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口) 答:匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个内部类可以作为一个接口,由另一个内部类实现 2.你对MVC的理解,MVC有什么优缺点?结合Struts,说明在一个Web应用如何去使用?答: MVC设计模式(应用观察者模式的框架模式) M:Model(Business process layer),模型,操作数据的业务处理层,并独立于表现层(Independent of presentation)。 V:View(Presentation layer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。C:Controller(Control layer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图 MVC框架的一种实现模型 模型二(Servlet-centric): JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sevlet,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。 StrutsMVC框架(Web application frameworks) Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。 Struts提供了一些组件使用MVC开发应用程序: Model:Struts没有提供model类。这个商业逻辑必须由Web应用程序的开发者以JavaBean 或EJB的形式提供 View:Struts提供了action form创建form bean,用于在controller和view间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。 Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。 二、 1.什么是WebService? 答: WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL(web 服务定义语言)/SOAP(简单请求协议)规范的。

相关主题
文本预览
相关文档 最新文档