2015年3月16日 星期一 小雨转阴

上周出发前,自己有整理一些测试题,以后估计用不上了,贴到这里。校园招聘,要求没那么高,随便问问。

聊天:

  1. 平时都有啥爱好
  2. 除了课堂外,平时都是怎么自学的?

C语音(1~2道):

  1. 实现一个函数,使用C语言把字母转换成大写,不能使用库函数。
  2. 实现一个函数,用来统计一个文本文件里的单词个数。
  3. 编译一个strcpy函数,如果是mm的话就出这道题,至少你还背过题吧?
  4. 求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C语言写。
  5. 请问C++的类和C里面的struct有什么区别?
  6. do {…} while (0) 在宏定义中的作用
  7. 说明一下big-endian和little-endian
  8. 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。
  9. 写一条匹配电话号码的正则表达式

Android:

  1. 谈谈handler机制的原理
  2. 画出Activity的生命周期
  3. 什么是ANR 如何避免它
  4. 什么情况会导致Force Close ?如何避免?能否捕获导致其的异常?如何调试?
  5. 谈谈做一个短信木马的思路
  6. 谈谈做短信自注册(打过三次电话或者发过三次短信、待机30天以上)的思路,比如使用30天后才激活、怎么才能保证程序不会被杀,这道题纯属我的原创,扩展性很好
  7. 介绍下android的数据存储方式,不同APK间怎么共享各自数据?
  8. 用的是什么手机?(不是Android的就不继续问了)自己刷过机吗?root过手机吗?一般都在哪里下载APK?
  9. 谈谈多线程,你会怎么用。
  10. 如何调试?反编译过吗?

驱动:

  1. 什么是GPIO? GPIO是相对于芯片本身而言的,如某个管脚是芯片的GPIO脚,则该脚可作为输入或输出高或低电平使用,当然某个脚具有复用的功能,即可做GPIO也可做其他用途。
  2. 列几条常用的linux命令
  3. 驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子?
  4. linux中中断处理的方法,(分为上下半部),下半部有几种方法(tasklet,workqueue,softirq),三种方法有何区别?(softirq优先级最高;tasklet基于softirq,不能休眠;workqueue可以休眠,适合于调度优先级不高的任务)
  5. 自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁还是信号量?还是两者都能用?为什么?
  6. 写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?
  7. 谈谈volatile的含义
  8. C语言中对位的操作,比如对a的第三位清0,第四位置1 9.arm的寄存器 ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。 31个通用寄存器根据其编程特点可分为如下几种类型: 1、不分组寄存器R0-R7 为所有模式共享 2、分组寄存器R8-R12 R8_fiq-R12_fiq: FIQ模式下的寄存器 R8-R12:其它模式共享 3、分组寄存器R13-R14 分为6组,用户、系统一组,其他每种模式一组。 R13_通常用作堆栈指针SP,R14_通常用作子程序链接寄存器LR,当进入子程序时,常用来保存PC的返回值于其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。 4、程序寄存器R15(PC) 所有模式共享 6个状态寄存器: 一个CPSR当前程序状态寄存器,保存当前程序状态。 五个程序状态备份寄存器SPSR(svc,abt,und,irq,frq),只有在异常模式下,才能被访问;各异常模式都拥有属于自己的SPSR,当发生异常时,SPSR用来保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。 10.ARM的七种工作模式 用户模式usr:正常的程序执行模式,此模式应用程序不能访问受操作系统保护的资源,不能改变模式,除非发生异常 快速中断模式fiq:支持高速数据传输或通道处理 外部中断模式irq:用于通用中断处理 管理模式svc:操作系统的保护模式,复位,软件中断(SWI)进入 数据访问终止模式abt:支持虚拟内存和内存保护 系统模式sys:支持操作系统的特殊用户模式(运行操作系统任务) 未定义指令终止模式und:支持硬件协处理器的软件仿真(浮点、向量运算)

11.大端对齐小端对齐?:通常用大端对齐,高位数据对应低位地址,也就是先高位再低位;小端对齐高位数据对应高位地址,先低位再高位。对内存的存取一定是从低位开始累加。

  1. i2c/spi/uart/usb 几种通信协议的区别,请简单介绍其中1-2种。 SPI(Serial Peripheral Interface:串行外设接口) I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI) I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制 UART总线是异步串口 SPI和UART可以实现全双工,但I2C不行 SPI 的通信原理很简单,它需要至少4根线,事实上3根也可以。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 I2C只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL UART硬件上由两根线,一根用于发送,一根用于接收 USB 是英文 Universal Serial BUS(通用串行总线)的缩写 USB 接口支持设备的即插 即用和热插拔功能 USB 的数据信号线是差分驱动的

Java

  1. 求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用Java语言写。
  2. 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。
  3. 谈谈Java的反射机制
  4. 写一条匹配电话号码的正则表达式.
  5. 说明一下big-endian和little-endian
  6. 多线程写过么?一般用于什么场合?

汇编:

  1. 寄存器清零操作
  2. 算了,其他的我就不问了,也不招

Python 不用刻意准备了,我们也不需要会写Python的,但我会随意问一两句,会的话加分。

  1. List的extend和append操作
  2. deepcopy 和 copy
  3. 写个函数,遍历目录,清除*.svn文件
  4. 文件操作
  5. 随意参考C和Java的算法题

网络:

  1. Internet采用哪种网络协议?画该协议的主要层次结构?
  2. 请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图
  3. TCP与UDP有何区别?
  4. Get和POST方法的区别
  5. cookie和session
  6. http和socket编程