昨天下午今天西山居来湖大笔试,西山居主要是游戏的,感觉就只能招男生,但还是过去瞅了瞅,不过应该是被鄙视了,因为现在还没给通知说去面试,网上一般说下午笔试完一般晚上就会有通知,不过还是收获了不少东西,感觉自己基础太差了。记得的题目不多了
其中有个说死锁的,为什么会产生死锁,如何解决死锁(操作系统本科时没学过,一通狂蒙)
查了下说答案应该是这个样子的 (*^__^*) ……
死锁:多个进程在运行中由于竞争资源造成的一种僵局,如没有外力作业,他们将无法继续执行。
死锁原因:1、竞争资源(资源数目少)2、进程之间推进顺序非法 资源可分为可剥夺性资源和不可剥夺性资源,竞争不可剥夺性资源可能导致死锁,而竞争可剥夺性资源是不可能发生死锁的。
死锁的处理方法:1、死锁预防 2、死锁避免 3、死锁检测 4、死锁解除
死锁预防是采用限制条件破坏死锁发生必要条件的一个或多个,但该方法会导致系统效率降低,资源利用率降低。(四个必要条件:1、互斥条件 2、请求和保持条件 3、不剥夺条件 4、环路保持条件)
死锁避免则是在资源动态分配是采用算法加以限制,防止系统进入不安全状态。
死锁检测与死锁解除配套使用。
预防死锁是不能破坏“互斥条件”这一必要条件,因为这是由设备的物理特性决定的,其它三个必要条件均可破坏。
另外还考了个sizeof和strlen的区别、堆和栈的区别,c++的内容不少,相当的一个多!
最后三个编程大题只能算编出了一个半,不怎么会。第一个是编个算法实现将两个整型数据放入buffer中。
第二个是将100个苹果分给四个人,要求每一个苹果分给每个人的概率是相同的,也就是可以(100,0,0,0),还可以是(25,25,25,25)等等,写出分配算法。
第三个是写个资源分配器吧,(就是在客户端申请链接的时候服务器如何实现分配连接)大体意思就是在一个游戏系统中有N个连接可供客户端使用,每个连接使用个ID,现在客户端要申请个连接,有空闲连接的话服务器就分配,没有的话就返回0。连接在释放之前始终是被占用的。大体上记住的就这么些了^_^
线程和进程的区别、qq是哪一层的(大家可以讨论下啊,感觉应该是应用层的)、tcp和udp的区别、网络的五层结构以及每层中代表协议有哪些、堆和栈的区别等等吧 记不怎么清楚了(中兴通讯前一段时间的技术面面试题)