2018年应届毕业宇视科技嵌入式软件开发工程师面试笔试总结

一共三面

1、第一次线上笔试:简单,考C语言和一点点算法

2、第二次5面:4个技术面+1个HR面。时间比较长,我从下午2点面试到晚上7点多,强度比较大,建议吃饱饭养足精神在去

3、第三次BOSS面。

面试的时候会让你把包什么的放入智能锁,然后会有HR带你去3楼的一个小房间,然后你就是被刷的NPC了。

HR面和BOSS面主要问你的兴趣爱好,家人关系,为什么不考研之类的,不总结了。因为博主主要关心技术,所以对技术问记得比较深,主要问了系统移植,Linux网络编程,驱动开发。因为问的比较多,我只记得我回答上了的,有一些没记住。答案自己整理,我就不贴了。

-------------

(1)线程的同步互斥

(2)进程之间通信问题:管道,有名管道,信号,消息队列,共享内存,信号量,套接字socket

(3)select函数有什么作用:send,read,accept函数都会导致阻塞,而Linux的select函数可以使我们在程序中同时监听多个文件描述符的读写状态,程序会停在select这里等待,直到被监视的文件描述符有某一个或者多个状态改变。select的机制中提供一fd_set的数据结果,实际上是一long类型的数组,每一个数组元素都能与一打开的文件描述符建立联系,当调用select时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select的进程哪一socket或文件可读。

(4)死锁,如何避免死锁:两个或者两个以上的进程在执行的过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,如果没有外力作用,它们都将无法推荐下去。此时称系统状态或者系统产生了死锁,这些永远在相互等待的进程称为死锁进程。

(5)信号量对应的函数:

(6)TCP的三次握手

(7)TCP和UDP的区别

(8)TCP的建立以及对应的函数

服务器:socket,bind,listen,accept,send,recv,closesocket....

客户端:socket,connect,recv,send

(9)UDP的建立以及对应的函数

服务器:socket,bind,recvfrom...

客户端:socket,sendto

(10)如何创建一个线程:pthread_create

(11)多线程怎么退出,是在创建的子进程内退出还是在主程序里面退出

(12)网络字节序:htons将主机的无符号短整形数转换成网络字节顺序

(13)TCP的报文格式

(14)PayLoad里面放了些什么

(15)什么叫流式传输,什么是报文传输

(16)UDP为什么是无链接的

(17)线程和进程的区别

(18)进程通信

(19)临界区是什么

 

(20)GDB调试

(21)Shell编程

(22)C语言的编译过程:编辑、预处理、编译、连接

(23)C语言的内存是如何排布的

(24)栈和堆的区别

(25)volatile

(26)sizeof和strcpy

(27)memcpy和strcpy的区别:

  • 复制的内容不同:strcpy只能复制字符串,而memcpy可以复制任意内容,比如字符数组,整形,结构体,类等等
  • 复制的方法不同:strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其3个参数决定复制的长度
  • 用途不同:通常复制字符串用strcpy,而需要复制其他类型数据一般用memcpy

(28)fwrite和write的区别

(29)strstr是干嘛的:strstr(str1, str2)函数用于判断字符串str1是否是str2的子串。

(30)指针

(31)结构体内存对齐

(32)结构体拷贝问题

(33)字符串常用操作函数

(34)栈里面放了什么东西

(35)冒泡排序法、字符串反转[现场写]

(36)判断链表有环、链表反转[现场写]

(37)静态链接和动态链接的区别

(38)大小端问题

(39)网络编程的一般流程

(40)中断模型

(41)设备模型

(42)proc文件系统

(43)gcc的编译选项

(44)makefile

(45)驱动想要被外部看到应该怎么样:export

(46)如何安装驱动程序

(47)RTSP的端口

(48)HI3518EV200支持的最大分辨率

(49)uboot是如何引导内核的

(50)uboot是怎么给内核传参的

(51)nfs服务器用来干嘛

(52)busybox

(53)如何调试程序
(54)快速排序【现场写】

(55)如何用UDP实现安全传输

(56)众多客户端,如何在服务端判断哪个客户端是否关闭,如果是光机,又是如何判断的

(57)typedef 和#define的区别

(58)“编译”前,计算机做了什么。“编译后”,计算机得到了什么

(59)struct和union的区别

(60)怎么引用数组元素,可以*p[i]吗?

(61)动态分配的内存,局部变量,静态变量分别存放在哪里

(62)linux中栈分配大小默认是多少

(63)什么是红黑树

(64)数据结构,二叉树

(65)TCP如何检测包错误

(66)线程资源要不要回收

(67)线程同步的作用

(68)UDP如何实现可靠性

(69)ip协议和icmp协议分别在哪一层

(70)linux的权限管理

(71)gcc命令

对了,每个技术面都回问你项目问题,记得把所有边边角角都记得清楚。

你可能感兴趣的:(编程与人生)