Microsoft Devices Group
1000人以上 | 互联网 计算机软件 通信/电信/网络设备 | 外资·合资 | 北京 上海 广州 东莞 乌鲁木齐
查看全部73条面经 面试经验共73条面经

方翰

共面试1轮 未获得工作

【笔经】2013年NOKIA暑期实习笔试题回忆版
因子为3,5,7至少一个的第k大的数???
逐个列举法,如果能被3,5,7整除就是他的倍数,以此找到一个count++,直到count=k时,跳出循环,打印出此时的值

----------------------------------------
完全二叉树的节点总数899,求叶子节点数》》》
需要考虑倒数第二层的叶子节点。。。
---------------------------------

char *s="helloworld";
char *p=s;
*p++='M';
cout
gcc编译可以通过,但是运行崩溃,
一个字符串指针指向的是一组字符,直接用赋值操作只是把第一个字符的地址赋给了要赋值的指针。要把整个内容赋值给一个字符串指针可以用strcpy
-------------------------------------

int a=12,b=9;
printf("a=%%d,b=%%d",a,b);
a=%d,b=%d
%%是输出%号
结论是当有%%两个百分号时,变成一个%然后输出,这时两个% 都用完了,d 作为普通字符输出了
int a=12,b=9;
printf("a=%d,b=\%d",a,b);
这样的结果是a=12;b=9
为啥呢。。。。。

printf("a=%%%d,b=%d",a,b);
这样才是a=%12;需要用三个。。。。。。。。。基础太不过关了
--------------------------------------
i=9999;
while(i)
i=i&(i-1);
count++;
就是求9999的二进制有多少个1;
-----------------------------------------
int a=-20;
    unsigned int b=15;
    cout    //隐式类型转换,int---unsigned 
    if(a+b>0)
    cout    if(a+b    cout-20转化为usigned int就是一个很大的数,然后加上15还是一个很大的数,快接近int的上限了,但是这个值还是正值,所以是大于0的

-----------------------
考了一个叫
const int *p[10]是什么意思
一个数组,里面有10个指针变量,每个指针指向的地址是const int型的

---------------------------------

假如是18进制的数
456*678===多少??

想想10进制的时候是怎么算的???
(4*10^2+5*10^1+6*10^0) *(6*10^2+7*10^1+8*10^0)
=4*3*10^4+……+30;
=1*10^5+……
=157320
所以456可以转化为
1*18^2+7*18^1+6*18^0;

然后按位进行计算jiuOK; 

----------------------------------------
进程之间的通信方式
内存共享
管道
函数调用
信号量

线程之间可以有函数调用。进程通信常用的有信号量和share memory,share memory是最快的。
管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

-----------------------------------
linux的文件
drwxr--r--用十进制怎么表示644
----------------------------------------
C++有哪几种情况只能用初始化列表,而不能用赋值?
static 成员
volatile
const
mutual
(1)对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操作,因此只能用初始化列表;

初始化与赋值是不同的:
赋值是删除值,赋予新值,构造函数的意思是先开辟空间然后为其赋值,只能算是赋值,不算初始化;

初始化列表就不一样了,开辟空间和初始化是同时完成的,直接给予一个值;
常量不能被赋值,只能被初始化,所以必须在初始化列表中完成;
C++的引用也一定要初始化,所以必须在初始化列表中完成。

    1) 引用必须被初始化,指针不必;
    2) 引用初始化以后不能被改变,指针可以改变所指的对象;
    3) 不存在指向空值的引用,但是存在指向空值的指针。


 -----------------------
http是不是建立在TCP之上的协议??
我觉得应该是把
-----------------------

一副扑克牌有52张,最上面一张是红桃A,如果每次把最上面的10张移到最下面而不改变它们的顺序及朝向,那么至少经过多少次移动,红桃A会出现在最上面?
A 27            B 26             C 25              D 24求详细解答,谢谢 
要使红桃A再次出现在最上面,则移动的扑克牌的总张数应能同时被10和52整除,即能被260整除,故至少经过26次移动。
-----------------------------------
有两个钟,一个一天慢一分钟,另一个一天快一分钟,当标准时间是2007年5月13日12:00时,两个钟同样是12时,问多少天后,两个钟又同样是12时
一天差2分钟是1/30小时,差12小时后两个钟又同时在12时,所以应该是12/(1/30)天,也就是360天
------------------------
总共100个人,看过A电影的有56人,看过B电影的有32人,都看过的有12人,问几个人都没看过
明显就是,集合问题,当时脑子不好使了,应该是100-(56+32)-12==、、
------------------------------
五个桶恰好贴错了三个标签的情况有多少种??
选两个桶,其中贴对的情况有C52=10种,每种对的时候,恰好剩余都贴错的情况有2中,如ABC,只能贴错为BCA和CAB,因此共有20种。
-------------------------------

还有一个基类和子类的关系问题。。
当基类的指针(P)指向派生类的时候,只能操作派生类中从基类中继承过来的数据。指向派生类的指针,因为内存空间比基类长,会导致严重了后果,所以不允许派生类的指针指向基类。而基类的指针可以指向派生类。

class Base
{

      public:

      Base::Base()

      {

      cout      fun();

      }

      void fun()

      {

      cout      mark();

      }

      virtual void mark()

      {

      cout      }




};

class Derived: public Base

{

      public:

      Derived::Derived()

      {

      cout      fun();

      }

      void fun()

      {

      cout      mark();

      }

       void mark()

      {

      cout      }

};







int main(int argc, char *argv[])

{




    //为啥这样不行呢 
    //Derived d=new Derived();
    //Base *b=&d;

    Base *b=new Derived();
    b->mark();

    //基类对象 
     //Base b;
     //b.fun();

    system("PAUSE");

    return EXIT_SUCCESS;

}




输出结果

class Base

{

      public:

      Base::Base()

      {

      cout      fun();

      }

      void fun()

      {

      cout      mark();

      }

      virtual void mark()

      {

      cout      }




};

class Derived: public Base

{

      public:

      Derived::Derived()

      {

      cout      fun();

      }

      void fun()

      {

      cout      mark();

      }

       void mark()

      {

      cout      }

};







int main(int argc, char *argv[])

{




    //为啥这样不行呢 

    //Derived d=new Derived();

    //Base *b=&d;




    Base *b=new Derived();

    b->mark();




    //基类对象 

     //Base b;

     //b.fun();




    system("PAUSE");

    return EXIT_SUCCESS;

}


输出结果:::::

多态,父类指针指向子类对象,先创建父类对象

Base::Base()

非虚函数,调用父类fun

Base::fun()

调用本类的mark

Base::mark()

直接调用mark时,由于是虚的。创建子类对象

Derived::Derived()

子类的fun

Derived::fun()

fun中的mark

Derived::mark()

再由于多态性,最后输出的是子类的mark

Derived::mark()
------------------------------

java的接口问题---搞错了

一个接口可以继承多个接口.interface C extends A, B {}是可以的.一个类可以实现多个接口:class D implements A,B,C{}但是一个类只能继承一个类,不能继承多个类class B extends A{}在继承类的同时,也可以继承接口:class E extends D implements A,B,C{}这也正是选择用接口而不是抽象类的原因

没有绝对的强制垃圾回收的方法,不过可以这样去做:1. 对于不再引用的对象,及时把它的引用赋为null。 obj = null;2. 如果内存确实很紧张,调用System.gc()  方法来建议垃圾回收器开始回收垃圾。

--------------
数据库的问题
create table
---------------
一次传输时间udp比tcp快吗??我觉得是快点
这里先简单的说一下TCP与UDP的区别:
 1。基于连接与无连接 
 2。对系统资源的要求(TCP较多,UDP少) 
 3。UDP程序结构较简单 
  4。流模式与数据报模式 
  5。TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证
------------------------------
为什么http是无状态协议,什么是有状态协议,都是什么意思呢

无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。 
2014-02-13 16:24:06 0 0
回答或评论0条

登录后,参与评论

评论不能为空

确认删除?

x

你新收到1封Microsoft Devices Group的职位邀请信