百度2013校园招聘笔试题(欢迎高手给予指点)
一、简答题
1.简述数据库以及线程死锁产生的原理及必要条件,简述如何避免死锁。
2.请列举面向对象设计的三个基本要素和五种主要涉及原则。
3.简述windows内存管理的几种方式及优缺点。
二、算法和程序设计
1.公司组织一次羽毛球比赛,采用淘汰机制,假设公司有1001个人,如果要评出“公司羽毛球第一高手”的称号,至少需要进行多少场比赛?请简述设计过程,并写出代码模拟比赛过程
2.一百个灯泡排成一排,第一轮将所有灯泡打开;第二轮每隔一个灯泡关掉一个。即排在偶数的灯泡被关掉,第三轮每隔两个灯泡,将开着的灯泡关掉,关掉的灯泡打开。依次类推,第100轮结束的时候,还有几盏灯泡亮着。
3.假定有20个有序数组,每个数组有500个数字,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个,怎么做?
三、系统设计题
手机上通常采用九键键盘输入。即:1-9个数字分别对应一定的英文字母(如:2对应ABC, 3对应DEF,...),因此,用户可以方便的输入中文内容。比如,用户输入“926”,可以对应“WXYZ”,“ABC"和”MNO“的一系列组合”WAN”,“YAN"、”ZAO“等,这些对应“万”,“严”,“早”等汉字的中文拼音。
要求我们把这样的输入方式应用在我们的手机联系人查找功能上。有一个联系人列表UserList,记录了(姓名,手机号)这样的组合,通过输入的数字字符串NumStr,按照下面的规则把对应的联系人查找出来,返回一个ReaultList。
规则:
1.手机号能连续部分匹配输入的数字字符串NumStr。如输入NumStr=926,则手机号为13926811111会被查出来;
2.联系人姓名中的汉字转化成拼音后能够连续匹配输入数字字符串NumStr对应的英文字母组合,如:输入NumStr=926,则联系人“王二”、“万事通”会被查找出来。因为“王二”的“王”的拼音“WANG”中含有“WAN”,和“926”能匹配。
输入:
联系人列表UserList<UserName, PhoneNo>;汉字拼音射射表Dict,数字拼音字符串NumStr。
输出:
符合规则的联系人列表ResultList<UserName, PhoneNo>。
腾讯2013校园招聘笔试题
1、生产者消费者问题,信号量
2、深度优先遍历二叉树
4、Belady
5、进程调度
6、数组最长子序列和
7、数组最长递增子序列
8、fork();函数
9、n个数进栈,出栈方式有多少种(卡特兰数)
10、逆波兰式
11、MySQL带条件和排序的select语句执行顺序、索引
搜狗笔试题(请高手们提供牛逼答案)
一、已知计算机有一下原子操作
1、 赋值操作:b = a;
2、 ++a和a+1;
3、for( ){ ***}有限循环;
4、操作数只能为0或者正整数;
5、定义函数
实现加减乘除操作
提示:
实现减法操作:
- static int dec(int n) {
- int tmp = 0;
- int result = 0;
- for (int i = 0; i < n; i++) {
- result = tmp;
- tmp++;
- }
- return result;
- }
这段代码执行后,result的值将变为n-1。注意到这段代码在自增时是如何巧妙地延迟了一步的。
现在,我们相当于有了自减一的函数dec。实现a-b只需要令a自减b次即可:
- static int testA_B(int a, int b){
- int result = a;
- for(int i=0; i<b; i++){
- result = dec(result);
- }
- return result;
- }
数码视讯笔试题
1、输入文件的名字,以字符串的形式打印出文件的内容
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.FileReader;
- import java.io.File;
- import java.io.IOException;
- private static void readFile(String filename) throws IOException {
- File file = new File(filename);
- if (file.exists() && file.isFile()) {
- BufferedReader buf = new BufferedReader(new FileReader(file));
- String line = null;
- while ((line = buf.readLine()) != null) {
- System.out.println(line);
- }
- buf.close();
- } else {
- System.out.println("文件不存在");
- }
- }
2、计算从今天后的97天是星期几,日期格式为2010-09-23,打印出97天后的日期
- public class Test{
- public static void main(String args[]){
- // 得到当前日期
- Calendar calendar = Calendar.getInstance();
- // 加上97天
- calendar.add(Calendar.DAY_OF_YEAR, 97);
- // 时间格式化
- SimpleDateFormat mFormat = new SimpleDateFormat("yyyy-MM-dd");
- // 输出日期
- System.out.println("今天之后的第97天是:" + mFormat.format(calendar.getTime()));
- // 从新格式化
- mFormat = new SimpleDateFormat("E");
- // 显示周几
- System.out.println(mFormat.format(calendar.getTime()));
- }
- }
3、写一个方法求100以内的素数,要求效率尽可能的高。
- public class Test{
- public static void main(String args[]){
- int i, j;
- int[] a = new int[101];
- for(i=0; i<101; i++){ //初始化数组
- a[i] = 1;
- }
- //筛选出100内的所有素数,从小到大筛去一个已知素数的所有倍数,例如根据2可筛去4、6、...、98,
- //根据3可筛去9、15、...、99;
- //由于4已被筛去,下一个为素数5,依次类推
- for(i=2; i<101; i++){
- if(a[i]!=0){
- for(j=i+i; j<101; ){
- if(j%i == 0){
- a[j] = 0;
- j = j + i;
- }
- }
- }
- }
- for(i=2; i<101; i++){
- if(a[i] != 0){
- System.out.println(i);
- }
- }
- }
- }