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这个变量保存当前的任务上下文信息),所以在没有进程上下文的环境下是无法进行进程切换的。

  • 相关阅读:
    女程序员这么少是因为怕秃头?如果你这样想,那就错了...
    使用简单的c#示例的坚实的架构原则
    第1部分设计模式FAQ(培训)
    为什么微软部分类和Java不?
    现实世界四部分类和部分方法的使用
    回到基础:n层ASP的异常管理设计指南。网络应用
    学习c#(第9天):理解c#中的事件(一种见解)
    EventBroker:同步和异步通知组件,松散耦合的事件处理
    潜水在OOP(第一天):多态和继承(早期绑定/编译时多态)
    学习c#(第8天):c#中的索引器(一种实用方法)
  • 原文地址:https://www.cnblogs.com/cpf123/p/2723141.html
Copyright © 2011-2022 走看看