1. C++
Const /Static
Mutable volatile
2. STL
2.1 STL 内部概念
重要组成部分: Algorithm, Container, iterator, funtor
Iterator 分类:Forward, bi-direction, random, input, output
Container 分类:sequence, list, association
2.2 Write Code with a Case
Prefix: 。。。。。。。。。。。。。。。。。
T -> vector, list, map
begin ----- curActive ------------ end
[begin, curActive) --> remove the iterator
[curActive, end) --> movve iterator to curActive, ++curActive
template<typename T>
class Container
{
Container(int curActive=0){}
typedef typename T::iterator Iterator;
Schedule(Iterator it)
{
}
private:
T m_tasks;
int m_curActive;
};
3. TCP
TCP 协议栈 的层次
connect Establish
closing (Client, Server)
如何快速close一个server链接?
4. 协议设计
多条消息如何处理;
只收到半条,怎么办
5. Database
5.1 SQL 编写
A ( pA, a1, a2) 30,000+ , 2000
B ( pB, b1, b2,.....) 100,000+ 4000
b2 ----> ref ----> pA
pA = b2 = [200, 700) -> a1, a2, b1, b2
select distinct (a.* , b.*) from A, B where pA = b2 and b2 in (200, 700)
select distinct( Va.* , b.* ) from ( select * from B where b2 in (200,700)) vb , (select a.* from A where pA in(200, 700) ) Va where va. pA = vb.b2
5.2 Stu(n * 10K) , Course(几K) , Teacher(几K) 设计学生选课系统/ 评教数据库,
问题: Stu 每年会变化, 如何设计一个高效的数据库, 优化措施
key : 每年的 Stu 表不能放在一张表里面;
7. 描述一下你设计过最好的系统的体系结构;
亮点在哪里?
8. 内核:
8.0 mask & SetBit
MASK(3) --> 00000000111 : ~((~0) << n)
SetBit(value, n) value |= (1<<n)
ClearBit(vlaue, n) value &= ~(1<<<n)
8.1 X86系统启动过程:
上电开始,到初始化完成 (Init 启动,启动shell)
key: 内核解压的过程,
串口的初始化过程;
8.2 驱动模型
kobject -> Ref, type, Kset
bus ,class , device, driver device-driver
8.3 内核中的并发机制:
1. sema mutex rw
2. Completions 通知
3. spin_lock lock (irq, no-irq)
8.4 中断;
如果很多事情需要做时, 中断服务程序如何编写:
key : 前半段,后半段;
使用 tasklets技术
前半部 和后半部的切换
8.5 drivers 开发时,如何实现一个阻塞的设备读写
app 级别怎么调用?
8.6 drivers 开发时, 对char字符设备下的读写数据 , 功能划分时,如何定义 read , write 和 iotcl 函数,
发送速率 1~~200,000bps
1. 发送 连续字节消息
2. 接受连续字节消息
3. 发送一个字节命令控制消息
4. 接受一个字节命令控制消息
5. 设置发送频率
消息格式定义,解码,编码,等等功能;
你如何设计这个系统- app, drivers 划分和实现