嵌入式面试总结

1:卓越公司,岗位:linux内核驱动开发

问题

1:介绍自己的项目经历;

2:项目中涉及到功耗,如何解决的?

将跟踪校准接口从通道级优化到bank级,实现双通道并行校准,另外在一些功能模块的开关上,比如采数模块和统计模块,都是随开随用,用完即关

2:是否使用linux开发,如何查看进程

ps:回答的不好,只知道ps,pad。具体不清楚

答案:查看进程状态(PS命令)
用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top

1.显示当前所有进程环境变量及进程间关系
ps -ef
2.显示当前所有进程
ps -A
3.与grep联用查找某进程
ps -aux | grep apache
4.找出与 cron 与 syslog 这两个服务有关的 PID 号码
ps aux | grep ‘(cron|syslog)’

  1. 进程的状态

        运行(正在运行或在运行队列中等待)
        中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
        不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
        僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
        停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
2.工具标识进程的5种状态码:
        D 不可中断 uninterruptible sleep (usually IO)
        R 运行 runnable (on run queue)
        S 中断 sleeping
        T 停止 traced or stopped
        Z 僵死 a defunct (”zombie”) process
命令参数:
        -A 显示所有进程
        -a 显示现行终端机下的所有程序,包括其他用户的程序
        c 显示进程真实名称
        e 显示环境变量
        f 显示进程间的关系
        r 显示当前终端运行的进程
        -aux 显示所有包含其它使用的进程

2:润和科技

问题

1:智能指针

答:智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露(利用自动调用类的析构函数来释放内存)
共享指针(shared_ptr):资源可以被多个指针共享,使用计数机制表明资源被几个指针共享。通过 use_count() 查看资源的所有者的个数,可以通过 unique_ptr、weak_ptr 来构造,调用 release() 释放资源的所有权,计数减一,当计数减为 0 时,会自动释放内存空间,从而避免了内存泄漏。
独占指针(unique_ptr):独享所有权的智能指针,资源只能被一个指针占有,该指针不能拷贝构造和赋值。但可以进行移动构造和移动赋值构造(调用 move() 函数),即一个 unique_ptr 对象赋值给另一个 unique_ptr 对象,可以通过该方法进行赋值。
如果希望只有一个智能指针管理资源或管理数组就用unique_ptr,如果希望多个智能指针管理同一个资源就用shared_ptr
弱指针(weak_ptr):指向 share_ptr 指向的对象,能够解决由shared_ptr带来的循环引用问题。weak_ptr不会使shared_ptr引用计数加一,它不管理shared_ptr内部的指针,主要是为了监视shared_ptr的生命周期,更像是shared_ptr的一个助手。

2:引用和指针的区别

(1). 指针是一个变量,存储的是一个地址,引用,是原变量的别名
(2). 指针所指向的内存空间在程序运行过程中可以改变,而引用所绑定的对象一旦绑定就不能改变。(是否可变)

(3). 指针在内存中占有存储内存空间,引用相当于变量的别名,在内存中会占4字节内存

(4). 引用没有 const,指针有 const,const 的指针不可变;

(5). 指针可以为空,但是引用必须绑定对象。(是否可为空)

(6). 指针可以有多级,但是引用只能一级。(是否能为多级)

引用在创建的时候必须初始化,只有在调用虚函数时,才能实现动态绑定

3:重载和重写

重载、重写、隐藏的区别
重载:是指同一可访问区内被声明几个具有不同参数列(参数的类型、个数、顺序)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。
隐藏:是指派生类的函数屏蔽了与其同名的基类函数,主要只要同名函数,不管参数列表是否相同,基类函数都会被隐藏。
重写(覆盖):是指派生类中存在重新定义的函数。函数名、参数列表、返回值类型都必须同基类中被重写的函数一致,只有函数体不同。
重写和重载的区别:
范围区别:对于类中函数的重载或者重写而言,重载发生在同一个类的内部,重写发生在不同的类之间(子类和父类之间)。
参数区别:重载的函数需要与原函数有相同的函数名、不同的参数列表,不关注函数的返回值类型;重写的函数的函数名、参数列表和返回值类型都需要和原函数相同,父类中被重写的函数需要有 virtual 修饰。
virtual 关键字:重载的函数可以有也可没有,重写的函数基类中必须有 virtual关键字的修饰,
隐藏和重写,重载的区别:
范围区别:隐藏与重载范围不同,隐藏发生在不同类中。
参数区别:隐藏函数和被隐藏函数参数列表可以相同,也可以不同,但函数名一定相同;当参数不同时,无论基类中的函数是否被 virtual 修饰,基类函数都是被隐藏,而不是重写。
 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值