您的位置:首页 > 职场人生

TX面试——祭奠我死去的第一波校招

2012-09-27 16:49 211 查看
今天参加腾讯终端面试,记录一下面试的问题,以备后面自己对空缺的知识补充


2012年10月4日15:57:58继续更新补充答案

1. 操作系统:

1) 死锁形成的条件有哪些? 自己答得很烂。。。

死锁形成的条件

1. 互斥条件

2. 占有和等待条件

3. 不可抢占条件

4. 环路等待条件

四个条件必须同时满足,才会发生死锁。

2) 线程和进程共享的内容包括哪些? 答错了。。。。。。。。。。

列表1

每个进程中线程所共享的内容

1. 地址空间

2. 全局变量

3. 打开文件

4. 子进程

5. 即将发生的报警

6. 信号和信号量的处理

7. 账户信息

列表2

每个线程自己的内容

1. 程序计数器:记录接着要执行哪一条指令

2. 寄存器:保存线程当前的工作变量

3. 堆栈:记录执行历史

4. 状态

l 进程用于把资源集中到一起,线程是CPU被调度执行的实体。线程实现线程共享一组资源并可以为完成某一任务而共同工作。

l 线程共享进程的全部特性。

l 资源管理的单位是进程而非线程,所以线程共享列表1的内容是合理的

3)linux文件系统:由我们大学阶段学操作系统都要完成的linux文件系统模拟提问,问我怎么实现。

因为是自己做的,说以答得上来

2. C++语言基础

C++的虚函数如何去判断是调用基类的实现还是子类的实现。。。。看过题目,会回答,不过答得不算好

一个C++的类

class A
{
void fun();
}

问该类的对象sizeof是多少字节——空类记忆中是4个字节,回来查了发现只有1个字节。。。。

class A
{
char c;
int d;
}
问该类的对象sizeof是多少字节——8字节,内存对齐

3.Java 语言基础

简述Java的垃圾回收。特别提问到循环引用的情况——自己答不好

HashMap和HashTable的区别,特别提问:HashMap的Key 可否为空,答案是可以,可是我又答错了

Java多线程的实现,提问用Thread和Runnable实现分别有什么不同——面试官说了Thread可以终止线程

4. 计算机网络

TCP 和UDP的却别————答得不好

TCP三次握手——画图

TCP拥塞控制的实现

异步socket和同步socket

5.Android

Handler的实现,要求实现Handler在两个线程之间通讯


AsyncTask的用法

6.算法题——不会做

从1到1000万的整数,乱序存放,随机抽取掉2个数,问如何在O(n)的时间复杂度内找到这两个数

求高手指点 这道题

生产者消费者问题

semaphore mutex = 1;
semaphore fillCount = 0;
semaphore emptyCount = BUFFER_SIZE;

procedure producer() {
while (true) {
item = produceItem();
down(emptyCount);
down(mutex);
putItemIntoBuffer(item);
up(mutex);
up(fillCount);
}
}
procedure consumer() {
while (true) {
down(fillCount);
down(mutex);
item = removeItemFromBuffer();
up(mutex);
up(emptyCount);
consumeItem(item);
}
}


避免竞争条件的有效方法

信号量:可以保证临界区每一次只有一个进程在更新共享内存,其他进程不会进入临界区也不会受到影响。信号量是一个整型变量,取值可以为0或者正值

互斥量:是一个处于两个状态之一的变量:
加锁和解锁。如生产者消费者问题中的mutex(二元信号量)

条件变量:允许线程由于未达到一些条件而阻塞。如生产者消费者问题中的full和empty(实现同步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: