首页 > 大华(华飞智能)嵌入式软件工程师面经
头像
AlexN
编辑于 2021-07-22 11:37
+ 关注

大华(华飞智能)嵌入式软件工程师面经

1.      自我介绍

2.      你刚刚在自我介绍中提到你对于网络编程和环境编程比较了解,能说说你指的网络编程是什么吗?

回答:socket编程,自己也做过一些小实验,实现了B/S通信。

3.      具体讲一讲socket编程的步骤。

我是从客户端讲到服务端的,因为我面的是应用层,他对这个问得比较细。

4.      你刚刚讲的是一个客户端和一个服务端的连接,有考虑过多个客户端和一个服务端连接的情况吗?

我回答了多进程的实现方式,没有问selectepoll,但还是建议大家还是去看看epollselect,因为我面的华飞智能,他们主要是多线程和多进程开发比较多。

5.      你有了解过多线程的开发吗?

我只是了解多线程的开发,但没有了解过怎么实现,但我认为,多线程和多进程的实现是类似的

6.      那你说说多线程的开发?

首先调用pthread_creat()的时候传入一个函数名,在线程成功创建之后会执行这个函数。可以在函数中实现我们想要并发执行的功能。

7.      在多进程和多线程编程中,一般用哪些方式来控制进程和线程对资源的访问。

一般常用互斥锁,自旋锁和信号量(其实还有条件变量等其他方式)

8.      你使用过什么方式呢?

我使用过信号量,信号量相当于一个计数器,有进程访问的时候计数器减一,当进程访问完毕之后计数器加一。

9.      在你使用多进程编程的时候,一般用什么方式创建进程呢?fork()还是vfork()?

这里我回答的fork()函数,vfork()没用过,不敢讲,然后问我fork()返回0的时候是哪个进程,这个肯定是子进程。

Fork()的返回值是返回子进程的进程号,因为子进程刚创建他没有孩子,所以返回0

10.   你对C++有了解吗?

有了解过C++的智能指针和面向对象的一些特性,但没做过实际的项目,平时用C用得比较多。

11.   你有了解过内存分配吗?说一下堆和栈分别储存哪些数据。

讲真的,我见过问堆和栈的区别的,也见过问代码中的全局变量和局部变量以及静态变量存储区域的,第一次遇到这么问的。

我回答的是,栈主要可以存储局部变量,函数参数。堆应该是可以存储任何数据的,堆空间是程序员申请的,想往里面存储什么都可以,但是用完之后需要释放空间,当然C++智能指针不用释放,它会自动释放。

我不知道这个回答对不对,反正按我的理解就这么回答。

12.最后反问阶段

我就像往常一样,问面试官对新人的培养啥的,公司晋升制度之类的,说实话,我想不出来其他问题。


更多模拟面试

全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐