来源于读者投稿,作者Angel。
笔试时间:2020.09.16,60分钟
宣讲会后直接笔试,若通过会有两轮面试,7-15天出结果。
题型:简答题8道,每题5分,共40分。编程题4道,每题15分,共60分。
公司现阶段主要产品为充电桩,专注于电力电子技术控制电能,交直流变换。
薪资待遇:本科8-15K,研究生10-20K。
1、如何使用GDB进行调试?
答案:大家可自行梳理调试流程。
2、Linux程序如何定位内存泄漏?
答案:如果在实际的调试过程中,怀疑某处发生了内存泄露,可以查看该进程的maps表,看进程的堆段或者mmap段的虚拟地址空间是否持续增加,如果是,说明很可能发生了内存泄露,如果mmap段虚拟地址空间持续增加,还可以看到各个段的虚拟地址空间的大小,从而可以确定是申请了多大的内存,对调试内存泄露类问题可以起到很好的定位作用。
3、简述一个Linux驱动程序的主要流程与功能。
1、 insmod module
2、 驱动module的初始化(初始化结束后即进入“潜伏”状态,直到有系统调用)
3、 当操作设备时,即有系统调用时,调用驱动module提供的各个服务函数
4、 rmmod module
4、简述一个完整的中断响应过程。
答案:中断请求、中断排队、中断响应、中断处理和中断返回。
5、C语言编译过程中,volatile关键字和extern关键字分别在哪个阶段起作用?
答案:volatile是在编译阶段,extern在链接阶段。
6、关键字static的作用是什么?
答案:经典问题。
7、下面的代码输出是什么?如果要得到想要的结果,需要怎么修改?
char *p_str = "hello,world";
printf("len(p_str)=%d",sizeof(p_str));
答案:输出是4,应该要把sizeof改成strlen。
8、下面的代码输出是什么?为什么?
int main(){
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
答案:2 5
《程序员面试宝典》经典题目
1、请写一个简单的代码,实现数学中的阶乘(n)计算。
#include <stdio.h>
int main()
{
int i,n;
double sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=sum*i;
}
printf("%d!=%lf",n,sum);
printf("\n");
return 0;
}
2、请写一个单例模式(C++)。
3、是否对Linux下的编译有了解,如果有请写一个编译命令(编译文件为:Hello.cpp),是否对makefile有了解,如果有请写一个简单的Makefile脚本。
4、写一个代码,产生一个线程。
答案:主要是pthread_create(&tid, NULL, thread, NULL);
·················· END ··················
本文分享自 嵌入式Linux系统开发 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!