zoukankan      html  css  js  c++  java
  • 笔试题面试题汇总

    1、从源文件到可执行文件的步骤及功能

        1、预处理:include的文件加载进来,宏替换,inline等……

        2、编译:将.c文件转换为asm文件,期间会根据设置进行相关的编译优化。

        3、汇编:将ASM文件转换为目标文件,这里的目标文件主要指可重定位的目标文件和共享目标文件。

        4、连接:将可重定位目标文件和共享目标文件连接成可以执行的目标文件,linux下是ELF格式,Windows是PE格式

        5、转换:第四步生成的目标文件是在操作系统上执行的,里面包含了ELF信息,如果是在单片机上执行的话就要进一步转换为bin和hex文件格式,hex格式比bin信

                     息更详细,bin文件时内存的直接映像,如果带有调试信息则要生成afx格式。

    2、USB NAK作用(瑞晟面试题)

        USB的包格式是:同步位+PID+数据+EOP(end of packet),根据PID可以将USB包分为

               令牌包(OUT IN SOF SETUP)

               数据包(DATA0 DATA1)

         握手包(ACK,NAK STALL)

              特殊包(PRE,ERR)

              ACK表示正确接收数据,并且有足够的空间来容纳数据。主机和设备都可以使用ACK来确认,而NAK、STALL、NYET只有设备能返回,主机不能使用这些握手包。NAK表示没有数据需要返回,或者数据正确接收但是没有足够的空间来容纳它们。当主机收到NAK时,知道设备还没有准备好,主机会在以后合适的 时候进行重传。

    3、中断里面可以使用Sleep吗?为什么(瑞晟面试题)

          这是同学的一个面试题,我的第一反应是可以,Sleep实际上是任务调度,将当前的任务上下文切换为下一个要调度的任务的上下文,然后返回中断,进而可以继续执行,但是查阅相关资料发现,在linux中,当运行中断时,是没有进程上下文信息的,(在Rt thread中,有rt_current_thread这个变量保存当前的任务上下文信息),所以在没有进程上下文的环境下是无法进行进程切换的。

  • 相关阅读:
    python函数名和左括号之间不能有空格
    linux版本选择
    filter_map
    awk统计总结
    Spring Boot + Redis 实现各种操作
    手机号正则校验
    判断windows系统
    Redis分布式锁
    shell 脚本快速部署 SpringBoot 项目
    Java主流的Http请求--原生的HttpURLConnection
  • 原文地址:https://www.cnblogs.com/cpf123/p/2723141.html
Copyright © 2011-2022 走看看