笔试错误2
12、文件长度是一个大于0的整数,用变量unsigned file_length; 来表示,把文件分成块,每块的长度也是一个大于0的整数,用变量unsigned block_length; 来表示,则文件被分成的块数为()
A、file_length/block_length B、file_length/block_length+1
C、(file_length+block_length-1)/block_length D、((file_length-1)/block_length+1
13、整数int i = 0xFE78DA45; int k = 0xAC3189B2;则i^k的值为()
A、0x524953f7 B、0xAC308800 C、0xFE79DBF7 D、0X0000001
????
以下是淘宝面试题
http://blog.csdn.net/hackbuteer1/article/details/6823329
1、我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分(C)
A、5瓶 B、6瓶 C、31瓶 D、32瓶
4、可用来检测一个web服务器是否正常工作的命令是()
A、ping B、tracert C、telnet D、ftp
ping 是 检测网络是否通
8、在公司局域网上ping www.taobao.com没有涉及到的网络协议是()
A、ARP B、DNS C、TCP D、ICMP
DNS是将域名www.taobao.com映射成主机的IP地址,ARP是将IP地址映射成物理地址,ICMP是报文控制协议,由路由器发送给执行ping命令的主机,而一个ping命令并不会建立一条TCP连接,故没有涉及TCP协议。
6、IPV6地址包含了()位
A、16 B、32 C、64 D、128
5、下面哪个操作是Windows独有的I/O技术()
A、Select B、Poll C、IOCP D、Epoll
2、在高性能服务器的代码中经常会看到类似这样的代码:
typedef union
{
erts_smp_rwmtx_t rwmtx;
byte cache_line_align_[ERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(erts_smp_rwmtx_t))];
}erts_meta_main_tab_lock_t;
erts_meta_main_tab_lock_t main_tab_lock[16];
请问其中用来填充的cache_line_align的作用是?
cpu的cache line 是缓存操作的最小单元,但是一个line有可能包含线程1需要的数据和线程2需要的数据,所以当线程1修改了它的数据,所以需要缓存一致性,同步其它线程的缓存,但是由于line是一整个操作的,所以它认为线程2的缓存也需要同步。所以,这个会导致严重的性能问题. 这就是所谓的False sharing问题。
解决方法很简单:
把每个项凑齐cache line的长度,实现隔离.
typedef union { erts_smp_rwmtx_t rwmtx; byte cache_line_align__[ERTS_ALC_CACHE_LINE_ALIGN_SIZE( sizeof(erts_smp_rwmtx_t))]; } erts_meta_main_tab_lock_t; 或者 _declspec (align(64)) int thread1_global_variable; __declspec (align(64)) int thread2_global_variable;
这就是为什么在高性能服务器中到处看到cache_line_align, 号称是避免cache的trash.
以下是阿里巴巴笔试
3、下列关于文件索引结构的叙述中,哪一个是错误的?
A、采用索引结构,逻辑上连续的文件存放在连续的物理块中
B、系统为每个文件建立一张索引表
C、索引结构的优点是访问速度快,文件长度可以动态变化
D、索引结构的缺点是存储开销大
文件索引结构是非聚集索引,数据库索引当中有聚集索引是因为有很多时候都需要范围查询,而文件中很少需要。
6、在一个长为33厘米的光滑凹轨上,在第3厘米、第6厘米、第19厘米、第22厘米、第26厘米处各有一个钢珠,凹轨很细,不能同时通过两个钢珠,开始时,钢珠运动方向是任意的。两个钢珠相撞后,以相同速度反向运动。假设所有钢珠初始速度为每秒运动1厘米,那么所有钢珠离开凹轨的最长可能时间是()
A、30 B、26 C、38 D、33
11、假设在n进制下,下面的等式成立,n值是() 567*456=150216
A、9 B、10 C、12 D、18
假设是X进制,则567=7+6*X+5*X^2,456=6+5*X+4*X^2,所以564*456=(7+6*X+5*X^2)*(6+5*X+4*X^2)而150216=6+X+2*X^2+5*x^4+X^5,由于567*456=150216,则6+X+2*X^2+5*x^4+X^5=(7+6*X+5*X^2)*(6+5*X+4*X^2),最后解出来X=18
20、判断一个单向链表中是否存在环的最佳方法是()
A、两重遍历 B、快慢指针 C、路径记录 D、哈希表辅助
24、一个有趣的抛硬币问题 :概率问题
假设有一个硬币,抛出字(背面)和花(正面)的概率都是0.5,而且每次抛硬币与前次结果无关。现在做一个游戏,连续地抛这个硬币,直到连续出现两次字为止,问平均要抛多少次才能结束游戏?注意,一旦连续抛出两个“字”向上游戏就结束了,不用继续抛。
http://www.cnblogs.com/atyuwen/archive/2010/09/12/coin.html
25、问题描述 :递归概率问题
12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?
这个笔试题,很YD,因为把某个递归关系隐藏得很深。
http://blog.csdn.net/suyksuyk/article/details/4697941
http://www.cnblogs.com/wuyuegb2312/p/3016878.html
编程之美 4.3买票找零
百度|腾讯面试题
http://blog.csdn.net/hackbuteer1/article/details/7348968
题中包含大量大数据的解法,很具有参考意义。多数题,不会
1、实现一个函数,对一个正整数n,算得到1需要的最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。
2.腾讯面试题:求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
变化情况 -> 递归!就像蚂蚁爬杆问题那样,我们不需要区分个体,只需要它的变化值。
11、如何找出字典中的兄弟单词。给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有多少个兄弟单词?
使用hash_map和链表。
首先定义一个key,使得兄弟单词有相同的key,不是兄弟的单词有不同的key。例如,将单词按字母从小到大重新排序后作为其key,比如bad的key为abd,good的key为dgoo。
使用链表将所有兄弟单词串在一起,hash_map的key为单词的key,value为链表的起始地址。
开始时,先遍历字典,将每个单词都按照key加入到对应的链表当中。当需要找兄弟单词时,只需求取这个单词的key,然后到hash_map中找到对应的链表即可。
这样创建hash_map时时间复杂度为O(n),查找兄弟单词时时间复杂度是O(1)。
20、将多个集合合并成没有交集的集合。
给定一个字符串的集合,格式如:{aaabbbccc},{bbbddd},{eeefff},{ggg},{dddhhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaabbbcccdddhhh},{eeefff},{ggg}。
(1)请描述你解决这个问题的思路;
(2)请给出主要的处理流程,算法,以及算法的复杂度
(3)请描述可能的改进。
网易游戏
http://blog.csdn.net/hackbuteer1/article/details/6878570
2、如果X大于0并小于65536,用移位法计算X乘以255的值为: (X<<8)-X
未
2013豆瓣
http://blog.csdn.net/hackbuteer1/article/details/11263443
5、已知一张员工数据表A的表结构如图,请用一条SQL语句列出所有的工作岗位(JOB字段)的平均工资,并将其按照平均工资用升序排列。
A {
ENAME VARCHAR(20)
JOB VARCHAR(20)
SALARY NUMBER(5)
}
select 班级,avg(成绩) from 表名1,表名2,······ WHERE 条件
降序
SELECT *
FROM kc
ORDER BY cpbh DESC
升序
SELECT *
FROM kc
ORDER BY cpbh ASC
6、描述在浏览器中敲入一个网址并按下回车后所发生的事情(尽量详细)
2013网新恒天
http://blog.csdn.net/hackbuteer1/article/details/11194703
不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。每个线程中访问临界资源的那段代码称为临界区(Critical Section)
2012届华为校园招聘机试题
http://blog.csdn.net/hackbuteer1/article/details/11161557
3、操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中(数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入队顺序排列(即先入队的任务排在前面),数组元素为-1表示结束。
例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} system_task[] = {0, 3, 1, 7, -1} user_task[] = {4, 8, 2, 6, -1}
1 package test; 2 /** 3 * 操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。 4 * 其中,系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。 5 * 现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。 6 * 函数scheduler实现如下功能,将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中 7 * (数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,优先级相同的任务按照入队顺序排列(即先入队的任务排在前面), 8 * 数组元素为-1表示结束。 9 * 10 * 例如:task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99} 11 * system_task[] = {0, 3, 1, 7, -1} 12 * user_task[] = {4, 8, 2, 6, -1} 13 * @author hasee 14 * 15 */ 16 public class test { 17 public static void main(String[] args) { 18 int task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}; 19 int systemTask[] = new int[22]; 20 int userTask[] = new int[22]; 21 scheduler(task, systemTask,userTask); 22 System.out.println("systemTask"); 23 for (int i : systemTask) { 24 if (i!=-1) 25 System.out.print(i+" "); 26 else{ 27 System.out.print(i+" "); 28 System.out.println(); 29 break; 30 } 31 } 32 System.out.println("userTask"); 33 for (int i : userTask) { 34 if (i!=-1) 35 System.out.print(i+" "); 36 else{ 37 System.out.print(i+" "); 38 System.out.println(); 39 break; 40 } 41 } 42 } 43 //更换存储为下标,更改比较方式 44 public static void scheduler(int task[], int systemTask[], int userTask[]){ 45 if (task==null||systemTask==null||userTask==null) 46 return; 47 int sys=0,user=0; 48 for (int i=0;i<task.length;i++) { 49 if (task[i]<50) { 50 systemTask[sys++] = i; 51 int p=sys-2,q=sys-1; //错误::~没有检查 p是否大于0 错误2。等于0也可以 52 while (p>=0 && task[systemTask[p]]>task[systemTask[q]]) //插入排序 53 swap(systemTask,q--,p--); 54 }else if(task[i]<=255 && task[i]>=50){ 55 userTask[user++] = i; 56 int p=user-2,q=user-1; 57 while (p>=0 && task[userTask[p]]>task[userTask[q]]) 58 swap(userTask,q--,p--); 59 }else continue; 60 } 61 systemTask[sys]=-1; 62 userTask[user]=-1; 63 } 64 //直接存储元素 65 public static void schedulerError(int task[], int systemTask[], int userTask[]){ 66 if (task==null||systemTask==null||userTask==null) 67 return; 68 int sys=0,user=0; 69 for (int i : task) { 70 if (i<50) { 71 systemTask[sys++] = i; 72 int p=sys-2,q=sys-1; //错误::~没有检查 p是否大于0 错误2。等于0也可以 73 while (p>=0 && systemTask[p]>systemTask[q]) 74 swap(systemTask,q--,p--); 75 }else if(i<=255 && i>=50){ 76 userTask[user++] = i; 77 int p=user-2,q=user-1; 78 while (p>=0 && userTask[p]>userTask[q]) 79 swap(userTask,q--,p--); 80 }else continue; 81 } 82 systemTask[sys]=-1; 83 userTask[user]=-1; 84 } 85 public static void swap(int arr[], int a, int b){ 86 int temp = arr[a]; 87 arr[a] = arr[b]; 88 arr[b] = temp; 89 } 90 91 }
各大IT公司校园招聘程序猿笔试、面试题集锦
http://blog.csdn.net/hackbuteer1/article/details/7959921