面试流程:上机考试->1 面电话面试->2 面杭州主管->3 面素质->4 面综合
一面 C 基础知识:
32 位 Linux 内核虚拟地址空间划分 0~3G 为用户空间,3~4G 为内核空间(注意,
内核可以使用的线性地址只有 1G)。
1.指针和引用的区别
“指针”:一个变量的地址,“引用”:一个变量的别名
“引用”可以用在形参当中,如果形参是一个变量的话,函数会复制一份这个变
量,这会消耗一定的时间和内存。
指针初始化可以为空,引用初始化必须有明确的指向.
1. 进程与线程的区别
进程是资源分配的最小单位,线程是 CPU 调度的最小单位
进程通信方式:管道,消息队列,共享存储,信号量(同步),套接字,信号
线程间通信:全局变量,条件变量,锁机制,信号量机制,信号机制,线程间的通信目
的主要是用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机
制
2. 链表,给一个链表,删除节点和找出中间的节点,不知道改链表的类型?
3. Cpu 调度线程的方式
http://blog.chinaunix.net/uid-20620288-id-5757322.html
线程是由进程来实现,线程就是轻量级进程(˜lightweightprocess),因此在 Linux 中,
线程的调度是按照进程的调度方式来进行调度的,也就是说线程是调度单元。 Linux 这样
实现的线程的好处的之一是:线程调度直接使用进程调度就可以了,没必要再搞一个进程
内 的 线 程 调 度 器 。 在 Linux 中 , 调 度 器 是 基 于 线 程 的 调 度 策 略 . 三 种 调 度 策 略
SCHED_OTHER,SCHED_IDLE,SCHED_BATCH,Linux 分时调度,先入先出调度策略,时
间片轮转调度,时间片轮转调度(Round-robinscheduling)。该策略是 SCHED_FIFO 基础
上改进来的,他给每个线程增加了一个时间片限制,当时间片用完后,系统将把该线程置
于队列末尾。放在队列尾保证了所有具有相同优先级的 RR 任务的调度公平。使用 top 命
令,如果 PR 列的值为 RT,则说明该进程采用的是实时策略,即调度策略是 SCHED_FIFO
或者为 SCHED_RR,而对于非实时调度策略(比如 SCHED_OTHER)的进程,该列的值
是 NI+20,以供 Linux 内核使用
4. 线程间通信的方式
线程间通信:条件变量,锁机制,信号量机制,信号机制,线程间的通信目的主要是
用于线程同步,所以线程没有像进程通信中的用于数据交换的通信机制
5.让多个线程顺序执行
法一:信号量
互斥锁:mutex
条件变量
原子操作
异步操作
栈和堆的区别
堆:是由 malloc 之类函数分配的空间所在地。地址是由低向高增长的。