2018/12/24 每日嵌入式面试笔试题分享,欢迎互相交流讨论。
1. 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为多少,该文件属性是什么?
2. 一个参数既可以是const还可以是volatile吗?解释为什么。
3. 一个指针可以是volatile 吗?解释为什么。
4. 下面的函数有什么错误:int square(volatile int *ptr){return *ptr * *ptr;}
5. insmod 一个驱动模块,会执行模块中的哪个函数?rmmod呢?这两个函数在设计上要 注意哪些?遇到过卸载驱动出现异常没?是什么问题引起的?
2018/12/21 每日Java面试笔试题分享,欢迎互相交流讨论。
1. java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出
他们分别是哪些类?
2. 启动一个线程是用 run()还是 start()
3. 线程的基本概念、线程的基本状态以及状态之间的关系/
4. sleep() 和 wait() 有什么区别?
5. 当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?
答案:
1. 嵌入式
(1) 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。
(2) 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。
(3) 是的。尽管这并不很常见。一个例子是当一个中断服务子程序修改一个指向一个buffer的指针时。
(4) 这段代码的目的是用来返回指针*ptr指向值的平方,但是,由于*ptr指向一个volatile型参数,编译器将产生类似下面的代码:
1.png (1.82 KB, 下载次数: 71)
2018-12-24 09:53 上传
由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:
2.png (1.55 KB, 下载次数: 72)
2018-12-24 09:53 上传
(5)会执行init函数,rmmod会执行exit函数。卸载模块时曾出现卸载失败的情形,原因是存在进程正在使用模块,检查代码后发现产生了死锁的问题。
要注意在init函数中申请的资源在exit函数中要释放,包括存储,ioremap,定时器 ,工作队列等等。也就是一个模块注册进内核,退出内核时要清理所带来的影响,带走一切不留下一点痕迹。
2. Java
(1) 字节流,字符流。字节流继承于 InputStreamOutputStream,字符流继承于 ReaderWriter。在 java.io 包中还有许多其他的流,低层流与调层流,高层流主要是为了提高性能和使用方便。
(2) 启动一个线程是调用 start()方法,启动线程并调用 run 方法。
(3) 线程是进程内的并发,没有自已内存空间,共享进程的,线程间的通信成本较低。Java中的线程有四种状态分别是:运行、就绪、挂起、结束。
(4)Sleep 是指休眠给定的时间,当这个时间达到之后,线程会再次醒来。
Wait是等待状态,多长时间不清楚,由另一个线程将其唤醒。
(5)如只其它方法是同步方法,不可以进入。如果不是可以进入。