C#中级软件开发笔试题

C#中级软件开发笔试题

背景

996的空闲时间参加了某半导体公司的软件开发笔试,记录一下笔试中的经典题目,考核很扎实。

笔试题目

选择题

(2)关于Main方法,以下描述错误的是(C )

A. Main方法是程序的唯一入口

B. Main方法可以设置为非静态方法

C. Main方法可以指定返回值

D. Main方法可以指定输入参数

(3)以下程序的输出结果为( A )

int a = 0;

int b = a++ + ++a;

int c = a++ + ++a;

Console.WriteLine(string.Format("{0},{1},{2}", a,b,c));

A. 4,2,6 B. 4,1,4 C. 4,2,4 D. 4,1,6

(4) 关于构造函数,下列说法正确的是( A )

A. 实例构造函数不能被继承

B. 实例构造函数内不能调用虚方法

C. 值类型构造函数可以对this进行赋值

D. 静态构造函数可以重载

(5)关于抽象类和接口的描述,下列说法错误的是( B )

A. 抽象类可以不包含抽象方法,但不能被实例化

B. 抽象类可以定义方法体,但必须在子类中重写

C. 接口中可以定义方法、字段、属性

D. 接口中方法前面不能有访问修饰符,且不能包含方法体

(6)关于string类,下列说法错误的是( D )

A. string类型属于引用类型

B. string类的内容是不可变的

C. 调用string类的"ToUpper"方法后,不会改变所指向的字符串的内容

D. 比较两个字符串是否相等时,运算符 "=="比较字符串的值,方法 "Equals"比较字符串的引用

(8)关于泛型,下列说法正确的是 ( C )

A.泛型类型可以被用来定义集合类,也可以用来定义非集合类

B.泛型方法必须在泛型类中定义

C.可以添加多个约束条件以限制传入的类型

D.泛型类可以作为父类被继承

(9)关于C#调用C++ dll的描述错误的是 ( E)

A. 定义的方法必须为静态方法

B. 定义的方法名必须和C++定义的方法名相同

C. 定义的方法必须使用DllImport特性修饰

D. 定义的方法必须使用extern关键字修饰

E. 定义的方法必须为public

(10) 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排列,密码单词必须遵循如下规则:

1)密码单词的最小长度是两个字母,可以相同,也可以不同

2)K不可能是单词的第一个字母

3)如果L出现,则出现次数不止一次

4)M不能使最后一个也不能是倒数第二个字母

5)K出现,则N就一定出现

6)O如果是最后一个字母,则L一定出现

① 下列哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词(B )

A. K B. L C. M D. N

② 如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是?(C )

A. 1 B. 3 C. 6 D. 9

③ 下列哪一个是单词密码?( B )

A. KLLN B. LOML C. MLLO D. NMKO

简答题

(2)C#和C++混合编程中,如果C++中函数参数为一个指针,该指针的地址指向长度为10的一维double类型数组,在C#调用该函数时,参数该如何传递??

cs 复制代码
using System.Runtime.InteropServices;

public class Program
{
    [DllImport("YourCppLibrary.dll", CallingConvention = CallingConvention.Cdecl)]
    private static extern void ProcessArray(double* arr);

    public static void Main()
    {
        double[] myArray = new double[10] { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0 };

        fixed (double* pArray = myArray)
        {
            ProcessArray(pArray);
        }
    }
}

(4)使用正则表达式验证给定字符串中包含的数(若数字连续,或点的前后均为数字,则归为一个数)。

如字符串: "$3R09.2D@190ECt5.0pa/",应返回 "3, 9.2, 190, 5.0" ?

cs 复制代码
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "$3R09.2D@190ECt5.0pa/";
        string pattern = @"\b\d+(\.\d+)?\b";
        MatchCollection matches = Regex.Matches(input, pattern);

        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value);
        }
    }
}

(3)设计一个自定义绘图控件,用于通过曲线或折线的方式展示一类实时产生并实时记录到文件中的数据,在需求对接中,主要需要考虑什么因素,简略举例?

cs 复制代码
1.折线的横纵坐标定义
2.客户端数据量的大小,数据量大考虑虚拟化问题
3.界面更新频率
4.数据的展示区间,比如时间段
5.控件样式
6.是否支持历史数据查询
7.文件的异步读写,以及文件大小

编程题之后再更新,这个题目相当扎实,很多都没遇见过。算法题之后更新。

相关推荐
Gu Gu Study2 分钟前
枚举与lambda表达式,枚举实现单例模式为什么是安全的,lambda表达式与函数式接口的小九九~
java·开发语言
დ旧言~16 分钟前
【高阶数据结构】图论
算法·深度优先·广度优先·宽度优先·推荐算法
时光の尘16 分钟前
C语言菜鸟入门·关键字·float以及double的用法
运维·服务器·c语言·开发语言·stm32·单片机·c
张彦峰ZYF21 分钟前
投资策略规划最优决策分析
分布式·算法·金融
-一杯为品-25 分钟前
【51单片机】程序实验5&6.独立按键-矩阵按键
c语言·笔记·学习·51单片机·硬件工程
以后不吃煲仔饭30 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师31 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
前端拾光者35 分钟前
利用D3.js实现数据可视化的简单示例
开发语言·javascript·信息可视化
The_Ticker36 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
程序猿阿伟36 分钟前
《C++ 实现区块链:区块时间戳的存储与验证机制解析》
开发语言·c++·区块链