一起谈.NET技术,中软面试题-最新

简介: 中软的面试比较经典,也比较严格,一般有四轮,类似于微软的面试。中软面过以后,根据项目组,会推到美国微软那边运用live meeting & con-call 再面一次。以下是我的面试题及个人的小分析,拿出来和大家share一下。

      中软的面试比较经典,也比较严格,一般有四轮,类似于微软的面试。中软面过以后,根据项目组,会推到美国微软那边运用live meeting & con-call 再面一次。以下是我的面试题及个人的小分析,拿出来和大家share一下。希望更多的人能过这个坎。如有什么问题,可以一起交流。直接进入主题:

 1. English communication. (sale yourself, project information, your interesting,and how to deal with problem    you encounter etc.)

 2.  the using of key words "new".

     Regarding this problem, you can refer to my other blog with this path: new . or you can get more information from internet.

3.Write a method which can remove the same unit from a Array which has been sorted.

//在排序好的数组中移除相同的元素
public   int  [] RemoveCommon( int  [] a)
{
       
if  (a.Length == 0 )
    {
        
return  a;
    }            
    List 
< int >  Result  =   new  List < int > ();
    
int  i , j;
    i 
=  j  =   0 ;
    
int  temp  =  a[ 0 ];

    
while  (i  <  a.Length)
    {
        
if  (a[i]  !=  temp)
        {   
            j
++ ;     
            temp 
=  a[i];
            Result.Add(temp);    
        }
        i
++ ;
    } 
    
//  convert List to Array
    
// ......
     return  Result;            
}

4. Judge Triangle and write test case for your code.

判断一个三角形,如果是等边的返回1,等腰返回2,其他的返回3,不能构成三角形的返回 4。 再编写test case 测试
判断一个三角形,如果是等边的返回1,等腰返回2,其他的返回3,不能构成三角形的返回  4 。 再编写test  case  测试
public   int  Triangle( int  a,  int  b,  int  c)
{           
    
if  (a  <=   0   ||  b  <=   0   ||  c  <=   0 )
    {
        
return   4 ;
    }
    
int  [] arry  =   new   int  [ 3 ] { a, b, c };
    Array.Sort(arry);
    
int  min, mid, max;
    min 
=  arry[ 0 ];
    mid 
=  arry[ 1 ];
    max 
=  arry[ 2 ];
    
if  (max - mid < min)   //  注意:用这个去判断是否能构成三角形
    {
        
return   4 ;   // 不能构成三角形
    }
    
if  (min  ==  max)
    {
        
return   1 ;   // 等边
    }
    
else   if  ( mid == min  ||  mid  ==  max)
    {
        
return   2 //  等腰
    }
    
else
        
return   3 ;    //  其他         
}

在这里,我最想提的就是这一题了,因为,我们知道,判断三角形,我们常用 两边之和大于第三边。但是,在这里,就不能用了。例如: a= int.MaxValue, b=int.MaxValue, c=int.MaxValue, 这时候三边肯定能构成三角形,但是,a+b 的和已经超过了int 型的最大值。造成内存溢出。 有人说,内存溢出 就是 0 或者负数,用这个不就可以判断吗?这个还真不行。你可以多写几个test case 试试。

Test case:

其他的普通的case,我就不写了,在这里就强调一下,边界值的问题(也就是常说的 临界值)。int.maxvalue, 0 etc.

5.Reverse string.

字符串反转,例如: string str="I love china", 反转后就是 str="china love I".
private   char  [] Convent( char  [] str, int  start,  int  end)
{
    
char  temp;
    
int  len  =  end  -  start;          
    
int  i = 0 ;
      
while (i < len / 2 )
      {
           temp  =  str[start + i];
           str[start  + i]  =  str[end  - -   1 ];
           str[end - i - 1 =  temp;
           i ++ ;
        }
    
return  str;
}
public   string  Reverse( string  str)
{
    
if  (String.IsNullOrEmpty(str))
    {
        
return   null ;
    }
     
char  [] objstr  =  str.ToCharArray(); ;
     
int  length = objstr.Length;
     objstr  =  Convent(objstr, 0 ,length);
     
int  i  =   0 ;
     
int  start = 0 ,end = 0 ;
    
while  (i  <  length)
    {                 
        
if  (objstr[i]  ==   '   ' || i == length - 1 )
        {
            
if  (i  ==  length  -   1 )
            {
                end  =  i  +   1 ;
            }
            
else
            {
                end  =  i;
            }
            objstr  =  Convent(objstr, start, end);
            start  =  end + 1
         }
         i ++ ;
    }
     
return   new   string (objstr);
}

6. Find the most width level in a tree and return the count of level, if there are many one, just return the nearest level. (it can be found in the internet)

寻找树的最宽层,并返回那层的层数(如有多个最宽层,返回离根节点最近的层数)
static   int   M  10   // 假设二叉树最多的层数
int  Width(BinTree T)
 { 
  
int   static  n[M]; // 向量存放各层结点数
   int   static  i = 1 ;
  
int   static  max = 0 ; // 最大宽度
   if (T)
   {
    
if (i == 1 // 若是访问根结点
     { 
      n[i] ++ // 第1层加1
      i ++ // 到第2层
       if (T -> lchild) // 若有左孩子则该层加1
       n[i] ++ ;
      
if (T -> rchild) // 若有右孩子则该层加1
       n[i] ++ ;
     }
    
else
     {  // 访问子树结点
      i ++ // 下一层结点数
       if (T -> lchild)
       n[i] ++ ;
      
if (T -> rchild) 
       n[i] ++ ;
     }
    
if (max < n[i])max = n[i]; // 取出最大值
     Width(T -> lchild); // 遍历左子树
    i -- // 往上退一层
    Width(T -> rchild); // 遍历右子树
   }
  
return  max;
 } // 算法结束

7. Implement the function: Int ConvertToInt(string num)

实现 Int ConvertToInt(string num)
public    int  ConvertToInt( string  num)
{          
    
int  result = 0 ;
    
int  temp = 0 ;
    
if  ( ! string .IsNullOrEmpty(num))
    {
        
if  (IsInteger(num))
        {
            
for  ( int  i  =   0 ; i  <  num.Length; i ++ )
            {
                temp  =  result;
                result  =  result  *   10   +  (( int )num[i]  -   48 );  // 0 的Asscall码 是48
                 if  (temp  ==  result)
                    
continue ;
            }
            
if  (temp  !=  result)
            {
                
throw   new  Exception( " overflow " );
            }
        }
       
    }         
    
return  result;    
}
//  判断字符串是否是整数。
public   bool  IsInteger( string  strIn)
{
    
bool  bolResult  =   true ;
    
if  (strIn  ==   "" )
    {
        bolResult  =   false ;
    }
    
else
    {
        
foreach  ( char  Char  in  strIn)
        {
            
if  ( char .IsNumber(Char))
                
continue ;
            
else
            {
                bolResult  =   false ;
                
break ;
            }
        }
    }
    
return  bolResult;
}

  关于上面的判断字符串里转换后是否是整数,还有其他的方法:

判断是否是数字
public   bool  isnumeric( string  str)
{
    
char [] ch  =   new   char [str.Length];
    ch  =  str.ToCharArray();
    
for  ( int  i  =   0 ; i  <  ch.Length; i ++ )
    {
        
if  (ch[i]  <   48   ||  ch[i]  >   57 )
            
return   false ;
    }
    
return   true ;
}

8. Quick sort. (you can get it from internet)

快速排序
static   public   void  Quicksort( int [] array,  int  begin,  int  end)
{
    
if  (begin  <   0   ||  end  <   0   ||  begin  >  end)
        
return ;
    
int  left  =  begin, right  =  end, temp;
    temp 
=  array[left];
    
while  (right  !=  left)
    {
        
while  (temp  <  array[right]  &&  right  >  left)
            right
-- ;
        
if  (right  >  left)
        {
            array[left] 
=  array[right];
            left
++ ;
        }
        
while  (temp  >  array[left]  &&  right  >  left)
            left
++ ;
        
if  (right  >  left)
        {
            array[right] 
=  array[left];
            right
-- ;
        }
    }
    array[right] 
=  temp;
    Quicksort(array, right 
+   1 , end);
    Quicksort(array, begin, right 
-   1 );
}

Ok, that is all.

那次面试比较久,接近四个小时。后面被推到微软那边面试,面试题,详见后面解析。 

目录
相关文章
|
6天前
|
存储 监控 安全
21个 JVM 技术点详解(附面试解答)
以上V哥给大家详细介绍了 JVM 中涉及的21个点,全网还没有针对 JVM 这样来梳理的内容,希望对你深入了解 JVM 有一定帮助,另,V 哥给大家推荐一本《深入 JVM 虚拟机》的书籍,可以作为工具书使用,高阶的 Java 程序员几乎人手一本。今天的分享就到这里,任何疑问欢迎与 V 哥一起交流,畅谈 Java 人生。
|
6天前
|
人工智能 开发框架 量子技术
【专栏】.NET 技术:驱动创新的力量
【4月更文挑战第29天】.NET技术,作为微软的开发框架,以其跨平台、开源和语言多样性驱动软件创新。它在云计算、AI/ML、混合现实等领域发挥关键作用,通过Azure、ML.NET等工具促进新兴技术发展。未来,.NET将涉足量子计算、微服务和无服务器计算,持续拓宽软件开发边界,成为创新的重要推动力。掌握.NET技术,对于开发者而言,意味着握有开启创新的钥匙。
|
6天前
|
开发框架 .NET C#
【专栏】理解.NET 技术,提升开发水平
【4月更文挑战第29天】本文介绍了.NET技术的核心概念和应用,包括其跨平台能力、性能优化、现代编程语言支持及Web开发等特性。文章强调了深入学习.NET技术、关注社区动态、实践经验及学习现代编程理念对提升开发水平的重要性。通过这些,开发者能更好地利用.NET构建高效、可维护的多平台应用。
|
6天前
|
机器学习/深度学习 vr&ar 开发者
【专栏】.NET 技术:引领开发新方向
【4月更文挑战第29天】本文探讨了.NET技术如何引领软件开发新方向,主要体现在三方面:1) 作为跨平台开发的先锋,.NET Core支持多操作系统和移动设备,借助.NET MAUI创建统一UI,适应物联网需求;2) 提升性能和开发者生产力,采用先进技术和优化策略,同时更新C#语言特性,提高代码效率和可维护性;3) 支持现代化应用架构,包括微服务、容器化,集成Kubernetes和ASP.NET Core,保障安全性。此外,.NET还不断探索AI、ML和AR/VR技术,为软件开发带来更多创新可能。
|
6天前
|
开发框架 Cloud Native 开发者
【专栏】剖析.NET 技术的核心竞争力
【4月更文挑战第29天】本文探讨了.NET框架在软件开发中的核心竞争力:1) .NET Core实现跨平台与云原生技术的融合,支持多操作系统和容器化;2) 提升性能和开发者生产力,采用JIT、AOT优化,提供C#新特性和Roslyn编译器平台;3) 支持现代化应用架构,包括微服务和容器化,内置安全机制;4) 丰富的生态系统和社区支持,拥有庞大的开发者社区和微软的持续投入。这些优势使.NET在竞争激烈的市场中保持领先地位。
|
6天前
|
开发框架 .NET 开发者
【专栏】领略.NET 技术的创新力量
【4月更文挑战第29天】.NET技术自ASP.NET起历经创新,现以.NET Core为核心,展现跨平台能力,提升性能与生产力,支持现代化应用架构。.NET Core使开发者能用同一代码库在不同操作系统上构建应用,扩展至移动和物联网领域。性能提升,C#新特性简化编程,Roslyn编译器优化代码。拥抱微服务、容器化,内置安全机制,支持OAuth等标准。未来.NET 6将引入更快性能、Hot Reload等功能,预示着.NET将持续引领软件开发潮流,为开发者创造更多机会。
|
6天前
|
物联网 vr&ar 开发者
【专栏】.NET 技术:为开发注入活力
【4月更文挑战第29天】本文探讨了.NET技术的创新,主要体现在三个方面:1) .NET Core实现跨平台开发革命,支持多种操作系统和硬件,如.NET MAUI用于多平台UI;2) 性能提升与生产力飞跃,C#新特性简化编程,JIT和AOT优化提升性能,Roslyn提供代码分析工具;3) 引领现代化应用架构,支持微服务、容器化,内置安全机制。未来,.NET 7将带来更多新特性和前沿技术整合,如量子计算、AI,持续推动软件开发创新。开发者掌握.NET技术将赢得竞争优势。
|
6天前
|
人工智能 前端开发 Cloud Native
【专栏】洞察.NET 技术的开发趋势
【4月更文挑战第29天】本文探讨了.NET技术的三大发展趋势:1) 跨平台与云原生技术融合,通过.NET Core支持轻量级、高性能应用,适应云计算和微服务;2) 人工智能与机器学习的集成,如ML.NET框架,使开发者能用C#构建AI模型;3) 引入现代化前端开发技术,如Blazor,实现前后端一致性。随着.NET 8等新版本的发布,期待更多创新技术如量子计算、AR/VR的融合,.NET将持续推动软件开发的创新与进步。
|
6天前
|
人工智能 前端开发 Devops
【专栏】洞察.NET 技术在现代开发中的作用
【4月更文挑战第29天】本文探讨了.NET技术在现代软件开发中的核心价值、应用及挑战。.NET提供语言统一性与多样性,强大的Visual Studio工具,丰富的类库,跨平台能力及活跃的开发者社区。实际应用包括企业级应用、Web、移动、云服务和游戏开发。未来面临性能优化、容器化、AI集成等挑战,需持续创新。开发者应深入理解.NET,把握技术趋势,参与社区,共创美好未来。
|
6天前
|
开发工具 C# 开发者
【专栏】理解.NET 技术,开创美好未来
【4月更文挑战第29天】本文探讨了.NET技术在软件开发中的关键作用,强调其核心优势,如语言多样性、丰富类库、强大的开发工具和跨平台能力。.NET在现代应用开发中涉及企业级应用、云服务集成、微服务、移动应用和游戏开发。未来,.NET将持续创新,提升性能,拓展应用场景,并促进更紧密的社区合作,通过跨平台框架扩大应用范围。开发者应深入学习.NET,抓住技术趋势,共创美好未来。