• 笔试错误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 }
    View Code

    各大IT公司校园招聘程序猿笔试、面试题集锦

    http://blog.csdn.net/hackbuteer1/article/details/7959921

  • 相关阅读:
    DirectUI的初步分析转
    win32中调用Atl控件
    win32 DirectUI控件开发与调用指南
    sqlite in qt
    Visual Studio2010中使用IE调试Atl
    silveright使用配置文件转
    Windows phone app 商店认证注意事项简要认证规范指南
    Silverlight桌面部署器及其使用
    Lua语言如何调用自己编写的C DLL 转
    使用Visual Leak Detector for Visual C++ 捕捉内存泄露
  • 原文地址:https://www.cnblogs.com/jslee/p/3465265.html
Copyright © 2020-2023  润新知