欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2023年软件工程师面试题.doc

    • 资源ID:83072485       资源大小:60.54KB        全文页数:22页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2023年软件工程师面试题.doc

    一填空题(每空1分,共12分)1面向对象的语言具有_封装_性、_继承_性、_多态_性。2能用foreach遍历访问的对象需要实现 _Ienumerable_接口或声明_GetEnumerator_方法的类型。3当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,在T的内部_可以_(可以 or 不可以)直接创建T的任何实例,在T的外部_不可以_(可以 or 不可以)直接创建T的任何实例。4. 委托声明的关键字是_Delegate_  5. override与重载的区别: override覆盖是基类中函数的重写。重载:方法或函数的名称相同,参数或许参数类型不同,进行多次重载实现功能。 二. 不定项选择(每题2分,共18)Question 1 以下叙述对的的是:      A. 接口中可以有虚方法。     B. 一个类可以实现多个接口。      C. 接口不能被实例化。       D. 接口中可以包含已实现的方法。Question 2 以下描述错误的是()1. 在C+中支持抽象类而在C#中不支持抽象类。2. C+中可在头文献中声明类的成员而在CPP文献中定义类的成员,在C#中没有头文献并且在同一处声明和定义类的成员。3. 在C#中可使用 new 修饰符显式隐藏从基类继承的成员。4. 在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。Question 3声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应当是1. void myCallBack(int x)2. int receive(int num)3. string receive(int x)4. 不拟定的Question 4下列描述错误的是() a) 类不可以多重继承而接口可以; b) 抽象类自身可以定义成员而接口不可以; c) 抽象类和接口都不能被实例化; d) 一个类可以有多个基类和多个基接口;Question 5下列关于构造函数的描述对的的是() a) 构造函数可以声明返回类型。 b) 构造函数不可以用private修饰 c) 构造函数必须与类名相同 d) 构造函数不能带参数Question 6 接口是一种引用类型,在接口中可以声明( ),但不可以声明公有的域或私有的成员变量。 a) 方法、属性、索引器和事件; b) 方法、属性信息、属性; c) 索引器和字段; d) 事件和字段;Question 7以下的C#代码,试图用来定义一个接口: public interface IFile        int A;       int delFile()        A = 3;        void disFile();  关于以上的代码,以下描述错误的是( )。 a) 以上的代码中存在的错误涉及:不能在接口中定义变量,所以int A代码行将出现错误; b) 以上的代码中存在的错误涉及:接口方法delFile是不允许实现的,所以不能编写具体的实现函数; c) 代码void disFile();声明无错误,接口可以没有返回值; d) 代码void disFile();应当编写为void disFile(); Question 8.class Class1public static int Count = 0;static Class1()Count+;public Class1()Count+;Class1 o1 = new Class1();Class1 o2 = new Class1();请问,Class1.Count的值是多少?( )1. 12. 23. 34. 4Question 9abstract class BaseClasspublic virtual void MethodA()Console.WriteLine("BaseClass");public virtual void MethodB()class Class1: BaseClasspublic void MethodA()Console.WriteLine("Class1");public override void MethodB()class Class2: Class1new public void MethodB()class MainClasspublic static void Main(string args)Class2 o = new Class2();o.MethodA();请问,此程序输出结果是:1. BaseClass2. BassClass Class13. Class14. Class1 BassClass (解析,三重继承问题,孙类只是继承父类,而不是直接继承祖父类)三问答题(每题3分,共15分)1. 简述 private、 protected、 public、 internal 修饰符的访问权限。  private:私有访问,它只能在声明自身的类中进行访问。protected:表达受保护的访问,该类内部和继承类中可以访问.public :表达公共访问,在代码任何位置都可对其进行访问  internal表达内部成员,在同一命名空间内可以访问。2. C#中的委托是什么?事件是不是一种委托?委托是指具有相同属性(也称具有相同的函数署名:返回类型相同,参数类型、参数顺序及参数个数相同)的函数或方法的抽象,关键字为delegate。重要用途是三个:1)函数回调;2)传递方法;3)事件机制     事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托,对事件的声明, 实际是声明一个私有的委托变量,对委托变量进行封装,即委托变量加上event关键字后,不管其前面的访问修饰符是public还是private,编译器都会将其编译为private。委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。以委托为参数的函数具有一定的通用性。使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是由于此变量代表一个方法),可以依次调用所有绑定的方法。3. abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?  不可以一起使用,但是可以和override一起使用。4. 请叙述属性与索引器的区别。属性:它是存取类的字段,索引器:Indexer它是特殊的属性,用它可以使用户像访问数组同样访问类的成员。5. 请详述在dotnet中类(class)与结构(struct)的异同。类class可以进行实例化,它是引用类型,内存分派在栈中,效率高,它有默认的构造函数,有析构函数可以使用 abstract 和 sealed, protected 修饰符。要用new进行初始化,结构它是属于值类型,内存分派在堆中,效率低,它没有默认的构造函数,但是可以添加构造函数,没有析构函数没有 abstract 和 sealed(由于不能继承) 不能有protected 修饰符 可以不使用new 初始化,但是可以在结构中初始化实例字段。 四分析程序(每题5分,共25分) (此题不能调试,若发现调试,扣除分数)1. 写出程序的输出结果class Class1         private string str = "Class1.str"       private int i = 0;       static void StringConvert(string str)             str = "string being converted."              static void StringConvert(Class1 c)             c.str = "string being converted."              static void Add(int i)             i+;              static void AddWithRef(ref int i)             i+;              static void Main()             int i1 = 10;           int i2 = 20;           string str = "str"           Class1 c = new Class1();           Add(i1);           AddWithRef(ref i2);           Add(c.i);           StringConvert(str);                   StringConvert(c);           Console.WriteLine(i1);           Console.WriteLine(i2);           Console.WriteLine(c.i);           Console.WriteLine(str);           Console.WriteLine(c.str);        10210strstring being converted2.写出程序的输出结果public abstract class A         public A()                    Console.WriteLine('A');                public virtual void Fun()                    Console.WriteLine("A.Fun()");        public class B: A         public B()                   Console.WriteLine('B');                 public override void Fun()                    Console.WriteLine("B.Fun()");                 public static void Main()                    A a = new B();            a.Fun();        解析:主函数 A a = new B();一方面声明了一个A的对象a,但被赋给不同于A的对象B,在此期间分别调用了A类的构造函数和B类的构造函数,然后调用a的fun()函数,由于a的fun()函数是虚函数,被b的fun()的函数覆盖,所以实际执行的是b的fun().答案:ABB.Fun()3.写出程序的输出结果:public class A         public virtual void Fun1(int i)                   Console.WriteLine(i);                 public void Fun2(A a)                     a.Fun1(1);            Fun1(5);        public class B : A         public override void Fun1(int i)                      base.Fun1 (i + 1);                 public static void Main()                     B b = new B();            A a = new A();            b.Fun2(a);            a.Fun2(b);                输出结果为:2516(一个函数的执行必须在一个具体的对象中实现,假如函数明确告诉是哪个对象,则在改该对象下执行;假如没有,则在默认的对象下执行)4. 在下面的例子里using System;class A      public A()                   PrintFields();            public virtual void PrintFields()class B:A      int x=4;      int y;      public B()                   y=-1;            public override void PrintFields()      x += 1;      Console.WriteLine("x=0,y=1",x,y);y += 1;      当使用B b = new B()创建的实例时,产生什么输出?b. PrintFields();结果是什么?X=5,y=0    b. PrintFields 结果是x=6;y=1 5. 下面的例子中using System;class A      public static int X;      static A()X=B.Y+1;class B      public static int Y=A.X+1;      static B()       static void Main()             Console.WriteLine("X=0,Y=1",A.X,B.Y);      产生的输出结果是什么?X=2,Y=1五程序设计(每题7分,共28分)1. 请编程实现一个冒泡排序算法?/比较法using System;using System.Collections.Generic;using System.Text; namespace test1    class Program            static void Main(string args)                    int Array = 6,18,12,23,19,28,30;            Console.WriteLine("排序前的数组:");            foreach(int n in Array)                            Console.Write(n+" ");                        Console.WriteLine();            for (int i = 1; i < Array.Length; i+) /控制趟数                            for (int j = 0; j < Array.Length - i; j+)                                    if (Arrayj > Arrayj + 1) /互换                                            int temp = Arrayj; Arrayj = Arrayj + 1; Arrayj + 1 = temp;                                                            /排序后            Console.WriteLine("排序后的数组:");            for (int n = 0; n < Array.Length; n+)                            Console.Write(Arrayn + " ");                        Console.WriteLine();            2. 编程程序实现委托,事件。using System;using System.Collections.Generic;using System.Text; namespace delegateDemo    class Program            static void Main(string args)                    Cat cat = new Cat();            Mouse mouse = new Mouse();            Master master = new Master();            cat.Calling += new EventHandler(mouse.Escape);            cat.Calling += new EventHandler(master.Wakened);            cat.Call();                public sealed class Cat  /猫类            public event EventHandler Calling;        public void Call()                    Console.WriteLine("猫开始叫了");            if(Calling!=null)              /检查事件是否被注册            Calling(this,EventArgs.Empty);/调用事件注册的方法                public sealed class Mouse /老鼠类            public void Escape(object sender, EventArgs e)                   Console.WriteLine("老鼠逃跑了.");                public sealed class Master /主人           public void Wakened(object sender, EventArgs e)                   Console.WriteLine("主人惊醒了.");              3. 写一个程序,语言不限,打印出100的阶乘(即1*2*3*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120。using System;using System.Collections.Generic;using System.Text;/,打印出100的阶乘(即1*2*3*100)的精确数值结果(不能是浮点数)。如5的阶乘是1*2*3*4*5=120namespace shuzu    class Program            static void Main(string args)                    Console.WriteLine("请输入一个正数");            int n = int.Parse(Console.ReadLine();            Console.WriteLine("0的阶乘1*2*3*1=2", n,n,Fn(n);                public static double Fn(int n)                    if (n=1)                            return 1;                        else                            return n * Fn(n - 1);                              4. 写一个程序,语言不限,能将人民币金额从阿拉伯数字转换为大写汉字表达。例如,把1234.56转换为壹仟贰佰叁拾肆圆零伍角陆分。using System;using System.Collections.Generic;using System.Text; namespace ConsoleApplication1    class Program            static void Main(string args)                    Console.WriteLine("请输入数字:");            string s = Console.ReadLine();            Console.Write("转换后¥:");            for (int i = 0; i < s.Length; i+)            /switch(Convert.ToInt32(Console.ReadLine()                switch (si - 48)                                    case 0:                        Console.Write("零");                        break;                    case 1:                        Console.Write("壹");                        break;                    case 2:                        Console.Write("贰");                        break;                    case 3:                        Console.Write("叁");                        break;                    case 4:                        Console.Write("肆");                        break;                    case 5:                        Console.Write("伍");                        break;                    case 6:                        Console.Write("陆");                        break;                    case 7:                        Console.Write("柒");                        break;                    case 8:                        Console.Write("捌");                        break;                    case 9:                        Console.Write("玖");                        break;                     case 10:                        Console.Write("拾");                        break;                    default:                        Console.Write("输入其他字符");                        break;                                        Console.WriteLine();            Console.Read();               六附加题(12分) 一列数的规则如下: 1、1、2、3、5、8、13、21、34. 求第30位数是多少, 用递归算法实现。(C#语言)using System;using System.Collections.Generic;using System.Text;/ 一列数的规则如下: 1、1、2、3、5、8、13、21、34. 求第30位数是多少, 用递归算法实现namespace rabbit    class Program            static void Main(string args)                    Console.WriteLine("请输入个正数:");            int I= int.Parse(Console.ReadLine();            Console.WriteLine("第0个数字是1", I, Fn(I);                static int Fn(int n)                    if ( n = 1 | n = 2 )                            return 1;                        else                            return Fn(n - 1) + Fn(n - 2);                        

    注意事项

    本文(2023年软件工程师面试题.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开