一起谈.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.

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

目录
相关文章
|
Java 测试技术 微服务
最新技术栈下 Java 面试高频技术点实操指南详解
本指南结合最新Java技术趋势,涵盖微服务(Spring Cloud Alibaba)、响应式编程(Spring WebFlux)、容器化部署(Docker+Kubernetes)、函数式编程、性能优化及测试等核心领域。通过具体实现步骤与示例代码,深入讲解服务注册发现、配置中心、熔断限流、响应式数据库访问、JVM调优等内容。适合备战Java面试,提升实操能力,助力技术进阶。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
508 25
|
11月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
687 0
|
8月前
|
监控 Cloud Native 测试技术
.NET技术深度解析:现代企业级开发指南
每日激励:“不要一直责怪过去的自己,他曾经站在雾里也很迷茫”。我是蒋星熠Jaxonic,一名在代码宇宙中探索的极客旅人。从.NET Framework到.NET 8,我深耕跨平台、高性能、云原生开发,践行领域驱动设计与微服务架构,用代码书写技术诗篇。分享架构演进、性能优化与AI融合前沿,助力开发者在二进制星河中逐光前行。关注我,共探技术无限可能!
.NET技术深度解析:现代企业级开发指南
|
Cloud Native Java 程序员
【2025 最新版互联网一线大厂 Java 程序员面试 + 学习指南】覆盖全面面试知识点、实用面试技巧及前沿技术实操内容
本内容涵盖互联网大厂主流技术栈的最新实操指南,包括微服务架构(Spring Cloud Alibaba Nacos、OpenFeign、Spring Cloud Gateway)、容器化与Kubernetes、云原生技术(Istio、Prometheus+Grafana)、高性能开发(Reactor响应式编程、CompletableFuture异步编程)及数据持久化(Redis分布式锁、ShardingSphere分库分表)。通过详细代码示例和操作步骤,帮助开发者掌握核心技术,适用于本地环境搭建与模块功能实践。适合Java程序员学习和面试准备,附带资源链接供深入研究。
342 5
|
人工智能 自然语言处理 算法
通义灵码助力技术求职:如何成为笔试面试冲刺的“超级助手”
在技术岗位竞争日益激烈的当下,求职季的备战已不仅是知识储备的较量,更是效率与实战能力的比拼。面对海量面试题、复杂算法挑战及快速迭代的技术框架,开发者亟需高效工具辅助突破瓶颈。阿里云推出的智能编码工具通义灵码,凭借其代码生成、优化及智能问答等核心能力,正成为开发者备战求职季的“超级助手”。
|
人工智能 缓存 Ubuntu
AI+树莓派=阿里P8技术专家。模拟面试、学技术真的太香了 | 手把手教学
本课程由阿里P8技术专家分享,介绍如何使用树莓派和阿里云服务构建AI面试助手。通过模拟面试场景,讲解了Java中`==`与`equals`的区别,并演示了从硬件搭建、语音识别、AI Agent配置到代码实现的完整流程。项目利用树莓派作为核心,结合阿里云的实时语音识别、AI Agent和文字转语音服务,实现了一个能够回答面试问题的智能玩偶。课程展示了AI应用的简易构建过程,适合初学者学习和实践。
626 22
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
612 0
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
313 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
352 6
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
252 4