微软实习生笔试总结:

2012微软暑期实习生笔试题 2012 Microsoft Intern Hiring Written Test 1. Suppose that a Selection Sort of 80 items has completed 32 iterations of the main loop. How many items are now guaranteed to be in their final spot (nev 阅读详情
1. ****************************************************************************************************************************************
struct A{//8
  A();
  ~A();
  int m1;
  int m2;
}a;
A::A(){};

A::~A(){};


struct B {//8
  B();
  ~B();
  int m1;
  char m2;
  static char m3;
}b;
B::B(){};

B::~B(){};


struct C {//12
  C();
  virtual ~C();
  int m1;
  int m2;
}c;
C::C(){};
C::~C(){};

sizeof(a)=sizeof(m1)+sizeof(m2)=4+4
sizeof(b) = sizeof(m1)+sizeof(m2) =4+1   但是,static不算,并且内存对齐,也就是必须是占内存最多的那个量的倍数,即sizeof(m1)的倍数,即2*4=8>5,所以选8
sizeof(c)=sizeof(*)+sizeof(m1)+sizeof(m2)=4+4+4  虚函数存在代表一个指针用,所以用sizeof(*),指针大小是4.

ps:都要内存对齐,但是第一个第三个已经对齐了。


2.求有权树任两节点间最长路径的时间复杂度
****************************************************************************************************************************************
用dp的思想,求出子孩子的,然后根据子孩子的求父亲的。以此类推。ps:树中最长的路径的两个端点中其中必然有一个是叶子(除了只有根的树)

3.求两个20x20的方阵放在100x100方阵中重合的概率
****************************************************************************************************************************************

x1,x2,y1,y2取值范围均[10,90]
p(|x1-x2|<20)=p(-20<x1-x2<20)=7/16
同理p(|y1-y2|<20)=7/16
原=p(|x1-x2|<20)*p(|y1-y2|<20)=49/256(运用的是几何概型)


4.给出后序遍历 求可能的先序遍历
****************************************************************************************************************************************

poj 2255 (已知先序和中序,求后序)

解法就是递归分出根的左、右孩子之后,将左边(或者右边)的字符串当成需要解决的字符串重新调用自身。


5.据说有一道和poj1088类似的题目
****************************************************************************************************************************************
有人用了个优先队列+dp就过了。想想也是,只能从高处向下。。。
有人写的dfs+dp。我感觉比我的想法多了暴搜这一层。
还有的呢,跟我第一想法有相似之处。但是呢,在找的时候用了分治。就是不是用数据记录,而是每次都递归。
http://www.cnblogs.com/linpeidong2009/archive/2012/03/18/2404737.html


6.Define an integer as a point in a one-dimensional space. Give an array that contains N points, return the first minimal window which contains at least ground(N/2) points.
****************************************************************************************************************************************


7.死锁的四个条件
****************************************************************************************************************************************
循环等待条件(circular wait) 互斥(mutual exclusion) 不可抢占(no preemption) 请求与保持(hold and wait)


8.深浅拷贝
****************************************************************************************************************************************
在某些状况下,类内成员变量需要动态开辟堆内存,如果实行位拷贝,也就是把对象里的值完全复制给另一个对象,如A=B。这时,如果B中有一个成员变量指针已经申请了内存,那A中的那个成员变量也指向同一块内存。这就出现了问题:当B把内存释放了(如:析构),这时A内的指针就是野指针了,出现运行错误。
  深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。


9.寻找第k大数

****************************************************************************************************************************************

点击打开链接


10.抽象类能定义abstract table吗?
****************************************************************************************************************************************
表示不清楚。抽象类不能定义对象吧。。。


11. Windows 7 下 the size of short int pointer,long int pointer on 32-bits computer and 64-bits computer
****************************************************************************************************************************************
这题的陷阱1:都是指针
陷阱2:32和64位上字长上有变化的是:long 和指针从原来的32变为了64
因此答案如下: 4bytes,4bytes,8bytes,8bytes


12.并发控制
****************************************************************************************************************************************
读脏数据 不可复读 丢失修改


13.死锁的四个条件
****************************************************************************************************************************************
将中文对应为英文:循环等待条件(circular wait) 互斥(mutual exclusion) 不可抢占(no preemption) 请求与保持(hold and wait)
4.1、互斥使用(资源独占) 
 一个资源每次只能给一个进程使用 
4.2、不可强占(不可剥夺) 
    资源申请者不能强行的从资源占有者手中夺取资源,资源只能由占有者自愿释放 
4.3、请求和保持(部分分配,占有申请) 
一个进程在申请新的资源的同时保持对原有资源的占有(只有这样才是动态申请,动态分配) 
4.4、循环等待 
    存在一个进程等待队列 
    {P1 , P2 , … , Pn}, 
其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路


14.ping 是基于什么协议的? 
****************************************************************************************************************************************
ICMP(ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。)


15.堆排序
****************************************************************************************************************************************
//堆是从1开始的。
#define MAX 100//数据元素的最大个数
typedef struct
{
    int r[MAX];
    int length;
}SqList;//定义一个线性表用于存放数据元素


void HeapAdjust(SqList &L,int s,int m)
{//已知L.r[s...m]中记录除L.r[s]外均满足堆的定义,本函数用于使L.r[s...m]成为一个大顶堆
    int j;
    int e=L.r[s];
    for(j=2*s;j<=m;j*=2)
    {
        if(j<M&&L.R[J]<L.R[J+1]) ++j;
        if(e>=L.r[j]) break;
        L.r[s]=L.r[j];
        s=j;
    }
    L.r[s]=e;
}
void HeapSort(SqList &L)
{//对顺序表L进行堆排序
    int i,e;
    for(i=L.length/2;i>0;i--)
        HeapAdjust(L,i,L.length);
    for(i=L.length;i>1;i--)
    {//将大顶堆的顶记录和最后一个记录相互交换
        e=L.r[1];
        L.r[1]=L.r[i];
        L.r[i]=e;
        HeapAdjust(L,1,i-1);
    }
}

16.快排
****************************************************************************************************************************************
非递归实现快排
#include <iostream>
using namespace std;


int partition(int *a, int l, int h)
{
int x = a[l];
int i = l;
int j = h+1;
int temp;


while (i<j)
{
while (a[++i]<x&&i<h);
while(a[--j]>x);


if (i<j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}


a[l] = a[j];
a[j] = x;


return j;
}


void qsort(int *a, int l, int h)
{
if (l>=h)
return;


int *s = new int[h-l+1];
int p = 0;
s[p++] = l;
s[p++] = h;


int low,high,q;


while (p>0)
{
high = s[--p];
low = s[--p];
if (low>=high)
break;


q = partition(a, low, high);


if (q-low > high-q)
{
s[p++] = low;
s[p++] = q-1;


if (high > q)
{
s[p++] = q+1;
s[p++] = high;
}


}
else
{
s[p++] = q+1;
s[p++] = high;
if (q > low)
{
s[p++] = low;
s[p++] = q-1;
}
}
}
delete []s;
}


17.
****************************************************************************************************************************************
UTF-8  3个字符表示汉语
UTF-16 2个字符表示汉语,且有两个字符表示是大尾还是小尾。
UTF-7 貌似用7位元表示ASCII码,这个不懂。。。


18.SPFA
****************************************************************************************************************************************
int spfa()  
{  
   int vis[N];  
   int dis[N];  
   memset(vis,0,sizeof(vis));  
   for(int i=1;i<=n;i++)  
     dis[i]=inf;  
   queue<int>myqueue;  
   while(!myqueue.empty())myqueue.pop();  
   vis[1]=1;  
   dis[1]=0;  
   myqueue.push(1);  
   while(!myqueue.empty())  
   {  
     int top=myqueue.front();  
     vis[top]=0;  
     myqueue.pop();  
     for(int i=0;i<edge[top].size();i++)  
     {  
         int v=edge[top][i].v;  
         int len=edge[top][i].len;  
         if(dis[v]>dis[top]+len)  
         {  
             dis[v]=dis[top]+len;  
             if(!vis[v])  
             {  
                 vis[v]=1;  
                 myqueue.push(v);  
             }  
         }  
     }  
   }  
   return dis[n];  
} 


19.求素数
****************************************************************************************************************************************
#include <cstdio>
#include <cstring>
#define maxn 30
int N = 1000;
int prime[maxn],plen;
bool flag[maxn];
void mkprime() {
    memset(flag, -1, sizeof(flag));
    plen = 0;
    for (int i = 2; i < N; i++) {
        if (flag[i]) {
            prime[plen++] = i;
        }
        for (int j = 0; (j < plen) && (i * prime[j] < N); j++) {
            flag[i * prime[j]] = 0;
            if (i % prime[j] == 0) {
                break;
            }
        }
    }
}
#include <cmath>
#include <algorithm>
int factor[100],len_pfactor,pfactor[1111] ,
            cpfactor[1111];
typedef long long LL;
void findpFactor(LL n) {
    int i, te, cnt;
    te = (int) sqrt(n * 1.0);
    for (i = 0, len_pfactor = 0; (i < plen) && (prime[i] <= te); i++) {
        if (n % prime[i] == 0) {
            cnt = 0;
            while (n % prime[i] == 0) {
                cnt++;
                n /= prime[i];
            }
            pfactor[len_pfactor] = prime[i];//有谁
            cpfactor[len_pfactor++] = cnt;//有几个
        }
    }
    if (n > 1) {
        pfactor[len_pfactor] = n;
        cpfactor[len_pfactor++] = 1;
    }
}
int len_factor = 0;
void dfs(int k, LL now) {//这个dfs好神
    if (k == len_pfactor) {
        factor[len_factor++] = now;
        return;
    }
    int i;
    for (i = 0; i < cpfactor[k]; i++) {
        now = now * pfactor[k];
        dfs(k + 1, now);
    }
    for (i = 0; i < cpfactor[k]; i++) {
        now = now / pfactor[k];
    }
    dfs(k + 1, now);
}
int main(){
    mkprime();
    findpFactor(100);
    dfs(0,1)  ;  for(int i = 0; i < len_factor;i ++)  printf("%d\n", factor[i]);
    return 0;
}


20.最小生成树
****************************************************************************************************************************************
void Prim(int u)
{
    int i,j,k;
    double min;
    for(i=1;i<=n;i++)
        if(i!=u)
            lowcost[i]=weight[1][i];


    visit[1]=true;
    for(i=1;i<n;i++)     //最小生成树有n-1条边
    {
        min=maxm;
        for(j=1;j<=n;j++)
            if(lowcost[j]<min && !visit[j]){
                min=lowcost[j];
                k=j;                //记录哪个点与当前最小生成树的距离最小
            }
        sum+=min;
        visit[k]=true;
        for(j=1;j<=n;j++)
            if(lowcost[j]>weight[k][j] && !visit[j])
                lowcost[j]=weight[k][j];
    }
}


21.static
****************************************************************************************************************************************
百科:http://baike.baidu.com/view/536145.htm


22.引用和指针
****************************************************************************************************************************************
http://www.cnblogs.com/skynet/archive/2010/09/22/1832911.html
//ps:这人将指针和引用讲到了反编译。。。笔试回来看吧。。。
int main(){
    int i = 10;
    const int* p = &i;//表示不能通过指针p间接修改,但是可以通过i修改
    int* const p = &i;//表示p的指向不能变,可以通过p间接修改;必须初始化
    const int& p = i;//表示不能通过引用p间接修改,但是可以通过i修改
    //int& const p = &i; 引用开始必须初始化,而且矢志不渝;所以,这个是不需要的。
    *p = 11;
    return 0;
}
//总结:有一个规则可以很好的区分const是修饰指针,
//还是修饰指针指向的数据——画一条垂直穿过指针声明的星号(*),
//如果const出现在线的左边,指针指向的数据为常量;如果const出现在右边,
//指针本身为常量。而引用本身与天俱来就是常量,即不可以改变指向。




如何求一堆数的gcd。。


C++面向对象继承、封装、多态相关代码分析

微软Microsoft 暑期实习第一轮笔试 题目不难,就结果而言算是良好 但是微软申请必然很卷,如果大多数人都能全部做对的话结果就不好说了;据官方邮件结果发布是在3周以后。 微软一轮面试细节: 突然收到邮件通知要求两天内自行完成笔试 在codility做题,120分钟三道题 完全开卷,无监考可以切屏,可以用本地IDE 题目一律核心代码模式 不显示所有的数据通过率,只显示4个案例通过情况 正因为是最简单的模式,加上题目本身不难,没全部做出来才感觉结果有点悬 据网上经验贴如果通过会在2~3月份安排面试,在线视频+敲代码 解题记录:(2小时 前2道题案 阅读详情

相关推荐

2014微软实习生面试经历

4月28号结束了最后的三面。等了一个多月,这个月初才收到了offer通知。因为三个面试官都没有要求我对面试内容保密,所以现在就将自己面试微软的整个过程记录为博文,供以后的面试者作为参考。转载请注明出处:http://blog.youkuaiyun.com/xiefubao。

xiefubao的专栏 3573

微软的实习生笔试题,不是太难,算法的题好多,但是很多答案都不确定,欢迎大家讨论答案~

微软的实习生笔试题,不是太难,算法的题好多,但是很多答案都不确定,欢迎大家讨论答案~   答案:1.C(每迭代一次至少一个确定)  2.AC 3.ACE 4.A 5.C 6.C 7.D 8. AD 9.B 10.E 11.BCD(没把握) 12.BC 13.不会 14.ACE 15.D 16.A 17.B 18.D 19.C 20.E 各个论坛上看到的分析:

lm312177697的专栏 720

微软2016校园招聘4月在线笔试 总结

今天参加了微软实习笔试,有点惨烈。。,题目看错WA了一堆导致后期时间 不够。。。最后一题没时间仔细想只能暴力骗分。先来前三题的总结吧。 题目链接:题目1 : Font Size描述 Steven loves reading book on his phone. The book he reads now consists of N paragraphs and the i-th paragrap

ddyyxx的程序员之路 4777

leetcode-python 第五周

leetcode 每周一记5

Viggo的小屋 610

AGM Supra软件从零到一:国产CPLD工程创建全流程拆解

本文详细拆解了AGM Supra软件从零开始创建国产CPLD工程的全流程,包括开发环境配置、工程创建、Quartus项目转换、TCL脚本执行与编译等关键步骤。特别强调了中文路径避坑、器件型号选择等实用技巧,帮助开发者高效完成CPLD开发任务。

weixin_29158413的博客 410

在VS2019里把JSBSim飞行模型集成到你的C++项目里(附完整配置流程和常见错误解决)

本文详细介绍了如何在Visual Studio 2019中将JSBSim飞行模型集成到C++项目中,包括环境准备、源码编译、项目配置和常见错误解决方案。通过实战技巧和优化建议,帮助开发者高效实现高精度飞行仿真功能,提升开发效率。

weixin_42620202的博客 413

【2014微软实习生笔试】1:字符排序

Time Limit: 10000ms Case Time Limit: 1000ms Memory Limit: 256MB Description For this question, your program is required to process an input string containing only ASCII characters between ‘0

solar一抹阳光的专栏 706

AGV路径规划实战:如何用Python+ROS实现激光SLAM导航(附避障代码)

本文提供了一份基于Python和ROS实现AGV激光SLAM导航的实战指南。内容涵盖从Docker环境搭建、激光雷达数据处理、Gmapping建图,到Move_Base全局/局部路径规划与TEB局部规划器配置的全流程。重点解析了如何通过参数调优实现稳定导航,并附带了紧急避障代码,帮助开发者快速构建具备自主路径规划与实时避障能力的AGV系统。

pepsi的博客 1235

【2014微软实习生笔试】3:逆序数问题

Time Limit: 10000ms Case Time Limit: 1000ms Memory Limit: 256MB Description Find a pair in an integer array that swapping them would maximally decrease the inversion count of the array. If such

solar一抹阳光的专栏 605

Keil5保姆级安装指南:从破解到STM32开发环境配置(附常见错误解决方案)

本文提供Keil5从安装到STM32开发环境配置的完整指南,包含破解步骤、常见错误解决方案及多芯片支持配置。详细讲解环境预检、核心安装、许可证管理及高效开发环境设置,帮助开发者快速搭建嵌入式开发平台。特别针对安装和卸载过程中的关键问题提供专业解决方案。

weixin_30369041的博客 126

ThingsBoard入门实战(七):公共发布和 UI 细节修改

公共发布和 UI 细节修改7.细节修改和公共发布一、公共发布二、UI优化下载运行修改三、下一步还可以做什么?更好的UI更丰富的系统模块 7.细节修改和公共发布 GET到新技能了,想给兄弟们演示,需要给他们每个人一个账号么? 答案肯定是:不需要! ThingsBoard 用 公共发布 解决了这个问题。 一、公共发布 首先我们来看一下路灯设备现在在谁名下? 如下图,路灯都是customerA的, 目前只有它和它的租户可以看到,其他人需要看就需要设为公有。 如图操作: 对于设备详情仪表盘,我们也需要设为公有

AIGC搞起 9119

微软实习生招聘笔试题目

微软实习生招聘笔试题目 您好!以下是本次微软实习生招聘的笔试题目,请仔细阅读并认真答题: 注意:本次测试题目仅限本人阅读,请勿传阅他人。谢谢! 提交材料 1.不超过2页的说明书,包括算法,设计,使用说明,及程序编译运行环境要求 2.C#,C++或C程序源代码,程序必须是可运行的 3.Optional: Visual Studio Project 文件,以及其他编译必须文件

Primary_wind的专栏 644

GD32F303定时器配置:实现两路互补PWM输出与相位控制

本文详细解析了基于GD32F303定时器实现两路互补PWM输出与精确相位控制的方法。通过配置TIMER2的中间对齐模式,结合REMAP功能解决引脚复用问题,从硬件层面稳定生成相位差180度的互补PWM信号,适用于电机驱动、开关电源等对时序要求苛刻的应用场景。

weixin_29182481的博客 307

【2014微软实习生笔试】2:找到第k个字符串

Time Limit: 10000ms Case Time Limit: 1000ms Memory Limit: 256MB Description Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s a

solar一抹阳光的专栏 824

金智维KRPA实战:Excel自动化数据处理全流程解析

本文详细解析了金智维KRPA在Excel自动化数据处理中的全流程应用,涵盖COM接口和文件读写两种核心技术方案,以及销售报表生成、数据清洗和可视化仪表盘等实战案例。通过企业级应用的异常处理、性能优化和安全合规实践,显著提升数据处理效率和准确性,助力企业降本增效。

weixin_30329623的博客 598

FH8626V100之开发环境搭建

FH8626V100是富瀚微出的一款带摄像头的方案,开发工具在Linux 上进行。版本 Ubuntu 20.04 64位。

xue_nuo的博客 1万+

微软-2020暑期实习生招聘-笔试

文章目录前言第一题 The War第二题 Archer第三题 Need for Speed 前言 (1)微软2020暑期实习生招聘笔试题于2020/3/25 晚上7点到9点之间考试,考试时长90分钟,三道编程题,纯英文。 (2)使用的平台是mettl,整体和leetcode风格类似,会给出方法和形参。基本主流语言都涵盖。 (3)只可以使用一台电脑(会检测有没有连接第二屏),需要检测摄像头和麦克风...

Heorin X的博客 3327

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

微软研发类实习生面试

自己一直对微软有一种对bat没有的向往吧!所以很早就关注了微软的实习生招聘。 想成为微软的intern必须经过以下环节 笔试+一轮电话面试+3轮现场面试(中间可能穿插着跟hr谈谈) 1 笔试 先说一下微软的笔试,微软所有的实习生都是必须参加笔试的无论是不是技术研发类的(只是笔试通过要求的分不一样而已),笔试就是4道acm题目,在我博客之前的文章中可以看到这四道题目,思维难道不大,但是在要求的

martinmateng的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

2013 微软校园实习生笔试题及详解(1-5题)

或许你早已经是一等一的笔试面试高手,对于微软等众多互联网公司的笔试题的出题套路、给分方式早已了如指掌,那么大可略过下面的一些解释说明。 首先,关于”霸笔“:因为微软是网申之后每人都有一个唯一的简历编号,这个编号貌似也会成为后期笔试、面试的一个Id。所以,亲们,如果真的想要亲身经历微软的笔试,也就别疏忽忘记定时投递简历哦(中文+英文)。 其次,关于评分方式和答题时间...

weixin_30481087的博客 191

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

微软实习生日记 第二篇 微软实习生招聘指导手册

微软实习生日记 第二篇 微软实习生招聘指导手册

ffygvf的博客 534

microsoft微软——笔试题2

   发信人: doggy (老三~差人※年复一年), 信区: Career_MS标 题: MS考经发信站: BBS 水木清华站 (Sat Nov 13 17:40:11 2004), 站内 刚考完回来,趁热乎回忆一下题目吧。A组题1 选择填空题居然是多选,ft。似乎十几道,开始考基本概念。比如为什么要使用函数(结构化,可重用之类的)后来看程序输出或者找错,

程序员笔试题解答 5472

微软笔试

微软笔试10月12日早上收到了微软公司的笔试邀请信,叫去参加次日下午2点在大连理工举行的全国性的统一笔试——这是微软公司今年的第二场大的统一笔试。本人深感荣幸(并不是说它是微软我就荣幸怎么样,我对所有我投简历的公司所给我的笔试、面试邀请都感到十分荣幸),但是心里对此次笔试并没有多少底。况且,时间很紧,从我收到信到开考也就不到一天时间,当时我人又在青岛,去往大连除了飞机外没有直达的交通工具,而飞

王来安的专栏 1505

2013年微软实习生招聘笔试题目(c/c++你懂多少?)

文章最初出处(原创):http://ilovers.sinaapp.com/drupal/article/2013年微软实习生招聘笔试题目 今天本是清明放假,但是,但是微软就是在今天下午组织了笔试考试,据说是全国统考。75分钟,20 道选择题,问题是,问题是神马?先看下简单的评分: 1-8 3 2 -2

zdarks的专栏 6083
上一篇: 最长子序列
下一篇: 以后面试看啊。。。
Julyana_Lin
博客等级 码龄15年 36粉丝 177原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值