Chinaunix首页 | 论坛 | 博客
  • 博客访问: 464082
  • 博文数量: 68
  • 博客积分: 2606
  • 博客等级: 上尉
  • 技术积分: 1308
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-13 23:01
文章分类
文章存档

2012年(6)

2011年(62)

分类: C/C++

2011-10-06 15:15:27

------------------------------------------
本文为本人原创,欢迎转载!
转载请注明出处:snowboy.blog.chinaunix.net
雪夜流星
------------------------------------------     
   经过了一段时间的折腾,发觉找工作能力很重要,运气也是一方面。而哥就是能力不是很强,而运气特背的那一种,找工作这东西还是要多笔多面,笔多了面多了自然有感觉有底气了。前面写了一篇校园招聘第一站,接下来由于企业蜂拥而至,以至于无法更新博客,趁放假将题目做一下小结:

第二站:数码视讯:(软件研发)
1.自己实现strstr函数
2.直接插入排序算法
3.只用+ -求a/b的商和余数

第三站:淘宝(系统工程师)
综合题:
1.一颗树上有海量结点,假设在亿这个级别,现在给定任意2个结点(非根结点),请找出他们共同的祖先结点,请在节省空间的前提下,高效查找。
注意:请勿对该树对做任何假设,它不一定是平衡树,也不一定有序。
2.请使用c语言完成strnicmp的编码实现,要求不能调用任何其他函数。strnicmp完成两个ascii字符串的比较,忽略大小写(两个英文字母比较时,认为大小写无差别),最多比较n个字符(当两个字符串长度超过n时,就认为它们的长度等于n),返回<0表示第一个字符串小于第二个字符串,返回等于0时表示两个字符串相等。函数声明如下:
int strnicmp(char const *s1, char const *s2, int n)
附加题:
1.ping 结果中的TTL时间是什么含义
2.网段的划分(192.168.1.128/25将其分为4段)
3.本地linux主机查看远程主机运行的时间
4.如何检查服务器的连接情况
5.域名解析过程

第四站 晨星软件(软件开发)
笔试:
1.ip地址的分类
2.动态库、静态库、可执行文件的区别
3.osi七层模型和tcp/ip四层模型以及各个层次中有哪些协议
4.单链表的查找、插入、删除
面试
1.循环队列判空与判满的条件,怎样入队、出队
2.简述链表的插入以及需要注意的地方
3.linux下查询cpu利用率的命令(top)

第五站 高德红外(嵌入式)
笔:
1.用递归算法实现n^3
面:
1.中断处理前需要做的工作
2.无操作系统和有操作系统有什么区别?在什么情况下需要用操作系统?
3.任务调度

第六站 烽火通信
1.子网的划分
2.如何判断一个系统是大端还是小端
3.查找素数

第七站 烽火虹信
1.内核双链表

第八站 晨星半导体(android系统开发)
笔:
1.一个单链表,不知道头结点,一个指针指向其中一个节点,如何删除这个指针指向的结点(思路:把该节点的后继结点的数据域复制到该节点的数据域中,这样相当于保存了后继结点,再删除后继的结点)
2.死锁的四个必要条件:互斥条件、请求与保持条件、不可剥夺条件、循环等待
3.内核的划分
4.定义一个交换两个整型数的宏 
   (1)#define SWAP(a,b) (a ^= (b ^= (a ^= b)))
    (2)#define swap(a, b) \
do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
采用do ...while(0)在宏中的使用,当然亦可以用()将其取代
使用宏函数的注意事项:
        1)使用“\”将太长的宏函数分为多行(增加可读性)。
2)将形参放入括号中,以免出错
3)控制宏函数体的长度
4)将整个宏函数体放在括号中:
     如果一个宏函数需要返回一个值,即可能作为一个语句的子表达式,应该将整个宏函数体放在一              个括号()内(避免操作符优先级导致的情况);如果宏函数只执行一些操作,不返回值,则应该将整个函数体放在花括号内,形成一个单独的程序块。(宏函数中返回值的情况并非为return返回,其返回形式可见下例)
     #define min(x, y) ({ \
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
(void) (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })
5.用非递归算法实现数列裴波那契数列(1 1 2 3 5 8...)
int Fib(int n)
{
    if(n < 3)
     return 1;    
     int a = 1, b = 1;
     for(int i=2;i < n;i++)
     {
         b = a + b;//b更新为当前元素的值
         a = b - a;//a更新为上一元素的值,即原来的b
                       //tmp =a+b;a=b;b=tmp;完成的是一样的功能
     }
     return a + b;
}
6.冒泡排序算法
面:
1.项目相关(实现机制)
2.uboot移植
3.驱动的工作流程
4.向HR提问

第九站 国民技术
笔:无大题,几个改错题,返回局部数组指针,和传一级指针进去分配内存,未释放空间之类,没什么技术     含量
面:技术面没问任何与技术相关的话题,一直向我套话,感觉最没水准的一次,HR意图不懂

ps:附上一个小程序
 如何检测处理器是big-endian还是little-endian

#include

int main()

{    

  int i = 1; 

  char *p = ( char *)&i;

  if( *p == 1)

    {      

     printf("little endian\n");


    }

     else

    { 

      printf("big endian\n");

   }

}



阅读(1409) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~