从本篇开始将会更新历年来各个公司的面试题与面经,题目来自于网上各个平台以及博主自己遇到的,如果大家有所帮助,帮忙点点赞和关注吧!
岗位:嵌入式软件工程师。
面试时间:20分钟。
面试
1 、简历中写了做过海思音视频项目,所以问了海思项目是怎么学的?(考察自学能力)。
2 、问:学海思项目,是因为兴趣,还是为了毕设?
回答:是因为兴趣,因为自己毕设是51单片机。
问:如果一个Linux和51单片机进行通讯,让我怎么设计通讯协议,然后问我怎么进行检验。
回答:可以设计串口,加奇偶校验,并且检查数据包的总字节数。
问:如果字节总个数是对的,但是有些位错了,那应该怎么去检查?
(不该说自己的毕设是51单片机的,因为自己本身不了解51单片机,所以这一块答得一般)后来面试官知道我对51单片机没怎么学过,是春招后才准备现学现用的,就没有继续问下去了。
3 、二叉树学过吗?
回答:学过,但是后面没怎么用,几乎忘光了,比较熟悉和常用的是链表。
4 、如何判断一个链表有环?
回答:快慢指针
5 、线程和进程的区别?
6 、线程和进程间的通讯方式有哪些?
7 、访问临界资源时应该怎么办?
8 、线程和进程的 API ,知道哪些?
回答:我把API名字和API的参数是什么都说了,面试官就没继续往下问了
9 、工作的意向地点
10 、对于加班的看法(据说 CVTE 加班很猛,另外两个是多益和三七)(广州)
11 、有没有转管理层的意向?
12 、有什么问题想问的?
回答:如果有幸入职贵公司,请问是否会有一些培训制度?
总结:除了一开始的那个怎么设计单片机和Linux通信协议没答好,其他的问题答得还可以,HR小哥哥挺有耐心挺温柔的,也会在面试时一步步引导。 从面试过程可以看出,很多公司,面试官一般都是根据你的简历和你的回答,来决定下一个问题。所以千万不要自己给自己挖坑,简历写的东西,必须要会,自己回答的东西,自己必须要会。所以面试官比较随和的情况下,可以通过自己的回答,把面试官引导到全是自己熟悉的领域。
博主回答:
上面的内容是别人的面经和回答记录!博主再做一下补充:第5和6题查看博主历史文章,操作系统篇已经总结过了!
第7题:
-
禁止中断:在访问临界资源之前,应禁止中断。这可以确保在访问期间不会发生中断,从而防止其他任务或中断处理程序干扰对临界资源的访问。
-
获取锁:使用同步机制(如互斥锁或信号量)获取对临界资源的独占访问权。如果资源已被其他任务锁定,则当前任务将等待直到资源可用。
-
访问临界资源:一旦获得对临界资源的访问权限,可以对其进行读取、写入或执行其他必要的操作。
-
释放锁:完成对临界资源的访问后,应释放锁,以便其他任务可以获取对资源的访问权限。
-
允许中断:在释放锁之后,可以重新允许中断,以便系统可以响应其他事件或中断请求。
第8题:
-
进程创建和管理:
fork()
:创建一个新的子进程,子进程是父进程的副本。exec()
:用来执行另一个程序。wait()
、waitpid()
:等待子进程结束或指定的子进程结束。exit()
:用于终止调用进程。
-
线程创建和管理:
pthread_create()
:创建一个新的线程。pthread_join()
:等待指定的线程结束。pthread_exit()
:终止调用线程。
-
进程间通信:
- 管道(pipes):
pipe()
、pipe2()
- 消息队列(message queues):
mq_open()
、mq_send()
、mq_receive()
- 共享内存(shared memory):
shmget()
、shmat()
、shmdt()
- 信号量(semaphores):
sem_open()
、sem_wait()
、sem_post()
- 管道(pipes):
-
线程间同步与通信:
- 互斥锁(mutex):
pthread_mutex_init()
、pthread_mutex_lock()
、pthread_mutex_unlock()
- 条件变量(condition variables):
pthread_cond_init()
、pthread_cond_wait()
、pthread_cond_signal()
- 互斥锁(mutex):