灵感互娱U3D笔试题

news2024/12/21 20:10:50

文章目录

    • 题目1
      • 解析
    • 题目2
      • 解析
    • 题目3
      • 解析
    • 题目4
      • 数组
      • 链表
    • 题目5
      • 解析
    • 题目6
      • 解析
    • 题目7
    • 解析
    • 题目8
      • 解析
    • 后话

题目1

以下C#代码的输出顺序是什么

namespace ConsoleApp2
{
  internal class Program
  {
    class A
    { 
      public A(string text)
      {
        Console.WriteLine(text);
      }
    }

    class B
    {
      static A a1 = new A("1");
      A a2 = new A("2");

      static B()
      {
        a1 = new A("3");
      }

      public B()
      {
        a2 = new A("4");
      }

    }

    static void Main(string[] args)
    {
     var b = new B();
    }
  }
}

解析

  1. 创建类B实例
var b = new B();
  1. 访问类B时,触发静态字段 a1 初始化:
static A a1 = new A("1");

输出1

  1. 执行类B的静态构造函数:
static B()
{
    a1 = new A("3");
}

输出: 3

  1. 实例化字段 a2 初始化:
A a2 = new A("2");

输出: 2

  1. 执行类B 的实例构造函数:
public B()
{
    a2 = new A("4");
}

输出: 4

考点:解析类的构造函数和初始化顺序来理解输出顺序。

答案:1、3、2、4


题目2

下面程序的输出结果

namespace ConsoleApp2
{
  internal class Program
  {
    struct DataStruct
    {
      public int data;
      public DataStruct(int d)
      { data = d; }
    }

    static void Main(string[] args)
    {
     List<DataStruct> structs = new List<DataStruct>();
      structs.Add(new DataStruct(1));
      structs.Add(new DataStruct(3));
      DataStruct dataStruct = structs[1];
      dataStruct.data = 2;
      Console.WriteLine(structs[1].data);
    }
  }
}

解析

重点在于

DataStruct dataStruct = structs[1];
dataStruct.data = 2;

structs[1]是否会被赋值为2,不会,因为这仅仅是修改了dataStruct,structs[1]还是为3


题目3

下列代码执行结果是什么

using System.Diagnostics;

namespace ConsoleApp2
{
  internal class Program
  {
    public class BaseClass
    {
      private int i;

      public BaseClass(int _i)
      {
        i = _i + 1;
      }

      public int GetI()
      {
        return i;
      }

      public virtual int GetIVal() 
      {
        return i;
      }
    }

    public class SubClass : BaseClass
    {
      private int i;
      public SubClass(int _i) : base(_i)
      {
        i = _i + 100;
      }
    }

    static void Main(string[] args)
    {
      SubClass sc = new SubClass(1);
      BaseClass bc = sc as BaseClass;
      Console.WriteLine($"GetI={sc.GetI()},GetIVal={bc.GetIVal()}");
    }
  }
}

解析

基类 BaseClass子类 SubClass 各有自己的 i 字段,但 SubClass 的 i 在 SubClass 内部使用


题目4

链表和数组的区别

数组

  1. 内存分配
    连续内存: 数组中的元素在内存中是连续存放的。
    固定大小: 数组的大小在创建时必须指定,并且在大小固定的情况下使用。
  2. 访问方式
    随机访问: 通过索引可以直接访问数组中的任何元素。
    复杂度: 查找第 n 个元素的时间复杂度为O(1)
  3. 插入和删除
    低效的插入和删除: 在数组中间插入或删除元素需要移动大量元素,因此时间复杂度通常为 O(n)。
    固定位置操作: 只能在已分配的空间范围内进行插入和删除,不能动态增长或收缩。
  4. 存储空间
    内存紧凑: 仅包含元素的数据部分,没有额外的指针开销。
  5. 类型
    一维数组: 简单的线性结构。
    多维数组: 可以是二维、三维等,形成矩阵或更高维的结构。
  6. 优缺点
  • 优点:
    访问速度快,可以直接通过索引访问。
    内存紧凑,没有额外的指针开销。
  • 缺点:
    大小固定,无法动态扩展或缩减。
    插入和删除操作较慢,特别是在数组中间操作时。

链表

  1. 内存分配
    非连续内存: 链表中的元素(节点)在内存中可以不连续存放。
    动态大小: 链表可以随时动态增长或收缩,无需预先定义大小。
  2. 访问方式
    线性访问: 访问链表中的元素需要从头节点(Head)开始逐个遍历,直到找到目标节点。
    复杂度: 查找第 n 个元素的时间复杂度为 O(n)。
  3. 插入和删除
    高效的插入和删除: 在链表中,插入和删除操作只需修改相关节点的指针,不涉及大量的移动。时间复杂度通常为 O(1)(在已知位置的情况下)。
    动态操作: 插入和删除可以在任意位置进行,且这些操作不会涉及对其他元素的移动。
  4. 存储空间
    额外开销: 每个节点除了数据外,还需要存储一个或两个指针(单向链表或双向链表),这会增加内存开销。
  5. 类型
    单向链表: 每个节点有一个指针指向下一个节点。
    双向链表: 每个节点有两个指针,分别指向前一个和后一个节点。
    循环链表: 最后一个节点指向第一个节点,形成一个环。
  6. 优缺点
  • 优点:
    动态大小,无需预先定义。
    插入和删除操作高效,尤其是在头部和中间。
  • 缺点:
    访问元素速度慢,无法直接按索引访问。
    额外的内存开销用于存储指针。

题目5

下列代码是否正确

using System.Diagnostics;

namespace ConsoleApp2
{
  internal class Program
  {
    static void Main(string[] args)
    {
      List<int> ls= new List<int>(new int[] { 1,2,3,4,5 });
      foreach (int i in ls)
      {
        if (i == 4)
        { 
         ls.Remove(i);
        }
      }
    }
  }
}

解析

不正确

不能修改集合: 使用 foreach 遍历集合时不能对集合进行修改(增删)。否则会报InvalidOperationException错误


题目6

简述向量点乘和叉乘的几何意义?

解析

特性点乘叉乘
结果类型标量向量
几何意义度量两个向量的相似度计算平行四边形面积,得到垂直向量
公式A·B = |A| |B| cosθ|A x B| = |A| |B| sinθ
结果符号正、负、零向量,符号依据右手定则
应用计算夹角、投影、方向判断计算面积、法向量、共面性判断

题目7

打印6*6乘法表,请严格按照下面格式输出,并注意程序效率。

1*1=1 2*1=2 3*1=3
1*2=2 2*2=4 3*2=6
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12
1*5=5 2*5=10 3*5=15
1*6=6 2*6=12 3*6=18

4*1=4 5*1=5 6*1=6
4*2=8 5*2=10 6*2=12
4*3=12 5*3=15 6*3=18
4*4=16 5*4=20 6*4=24
4*5=20 5*5=25 6*5=30
4*6=24 5*6=30 6*6=36

解析

using System.Diagnostics;

namespace ConsoleApp2
{
  internal class Program
  {
    static void Main(string[] args)
    {
      for (int row = 1; row <=6; row++)
      {
        for(int col = 1; col <=3; col++)
        {
          int res = row * col ;
          Console.Write($"{col}*{row}={res}");
          if (col < 3 && res.ToString().Length >= 2)
          {
            Console.Write(" ");
          }
          else if (col < 3 && res.ToString().Length < 2)
          {
            Console.Write("  ");
          }
        }
        Console.WriteLine();
      }
      Console.WriteLine();
      for (int row = 1; row <= 6; row++)
      {
        for (int col = 4; col <= 6; col++)
        {
          int res = row * col;
          Console.Write($"{col}*{row}={res}");
          if (col < 6 && res.ToString().Length >= 2)
          {
            Console.Write(" ");
          }
          else if(col < 6 && res.ToString().Length < 2)
          {
            Console.Write("  ");
          }
        }
        Console.WriteLine();
      }
    }
  }
}

题目8

写一个求斐波那契数列的函数。请充分考虑时间和空间效率,且示例的函数调用能执行成功。
斐波那契数列:1、1、2、3、5、8、13、21、34 ······

解析

给定 n ,请计算 F(n) 。F(n)=F(n-1)+F(n-2)

public int Fib(int n) 
{
    int pre=0;
    int next=1;
    int sum;
    for(int i = 0;i < n;i++)
    {
        sum=pre+next;
        pre=next;
        next=sum;
    }
    return pre;
}

后话

考的题目比较基础!

enjoy it ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同城跑腿多合一系统源码小程序支持安卓+IOS+公众号+H5

&#x1f680; 同城跑腿多合一小程序&#xff1a;便捷生活新选择 &#x1f4a8; 一、引言&#xff1a;走进便捷新纪元 在这个快节奏的现代生活中&#xff0c;时间成了最宝贵的财富。而“同城跑腿多合一小程序”正是为了满足大家对于便捷、高效生活的追求而诞生的。它不仅是一款…

高效设计必选!5款好用的UI动效工具

UI 动态设计是应用程序设计的重要组成部分。随着技术的积累&#xff0c;UI设计中的动态效果遍地开花&#xff0c;UI动态效果可以使我们的页面更时尚、更有趣、更人性化。5G网络的快速发展也使美丽的动态效果几乎无缝地嵌入到UI界面中。今天&#xff0c;毫不夸张地说&#xff0c…

豆瓣电影top250网页爬虫

设计思路 选择技术栈:确定使用Python及其相关库&#xff0c;如requests用于发送网络请求&#xff0c;获取网址&#xff0c;用re(正则表达式)或BeautifulSoup用于页面内容解析。设计流程:规划爬虫的基本流程&#xff0c;包括发起请求、接受响应、解析内容、存储数据等环节。模块…

CCF推荐会议必投攻略:这些顶级会议投完直通录取大门

CCF推荐会议必投攻略&#xff1a;这些顶级会议投完直通录取大门&#xff01; 会议之眼 快讯 CCF介绍 CCF&#xff08;China Computer Federation&#xff09;即中国计算机学会&#xff0c;前身是中国电子学会计算机专业委员会&#xff0c;成立于1962年。这是由从事计算机及相…

容器基本概念_从虚拟化技术_到容器化技术_开通青云服务器_并远程连接_容器安装---分布式云原生部署架构搭建007

这一部分,属于以前都会用到的,会快速过一遍,对于关键技术问题会加以说明 https://www.yuque.com/leifengyang/oncloud文档地址在这里,可以看,有些命令可以复制使用 可以看到容器的出现就是 目的就是,让你做的所有的软件,都可以一键部署启动 打包就是docker build 然后: 对于…

Github生成Personal access tokens及在git中使用

目录 生成Token 使用Token-手工修改 使用Token-自动 生成Token 登录GitHub&#xff0c;在GitHub右上角点击个人资料头像&#xff0c;点击Settings → Developer Settings → Personal access tokens (classic)。 在界面上选择点击【Generate new token】&#xff0c;填写如…

ctfshow web七夕杯

web签到 执行命令没有回显&#xff0c;我们直接写文件就可以了 有字符长度限制 ls />a nl /*>a访问url/api/a下载文件 easy_calc <?phpif(check($code)){eval($result."$code".";");echo($result); }function check(&$code){$num1…

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建

Python-gui开发之Pycharm+pyside6/Pyqt6环境搭建 软件版本一、软件安装1、Python安装2、Pycharm安装3、pyside6或pyqt6安装①安装pyside6②安装PyQt6和pyqt6-tools二、Pycharm项目配置1、插件安装2、新建项目以及环境配置3、包管理安装三、在Pycharm中配置PySide61、pyside6 Qt…

Redis持久化主从哨兵分片集群

文章目录 1. 单点Redis的问题数据丢失问题并发能力问题故障恢复问题存储能力问题 2. Redis持久化 -> 数据丢失问题RDB持久化linux单机安装Redis步骤RDB持久化与恢复示例RDB机制RDB配置示例RDB的fork原理总结 AOF持久化AOF配置示例AOF文件重写RDB与AOF对比 3. Redis主从 ->…

C/C++ struct stat介绍

目录 前言 struct stat struct stat 使用 参考 共勉 前言 本文详细介绍了stat结构体的成员变量&#xff0c;以及使用案例&#xff0c;希望能够帮到您。 struct stat struct stat 结构体用于表示文件或者文件系统对象信息的一种结构体的声明&#xff0c;通常在POSIX&#x…

Gobject tutorial 八

The GObject base class Object memory management Gobject的内存管理相关的API很复杂&#xff0c;但其目标是提供一个基于引用计数的灵活的内存管理模式。 下面我们来介绍一下&#xff0c;与管理引用计数相关的函数。 Reference Count 函数g_object_ref和g_object_unref的…

基于JSP的个人交友网站系统

开头语&#xff1a; 你好&#xff0c;我是计算机学长猫哥。在这个信息时代&#xff0c;个人交友网站为我们提供了一个便捷的社交平台。如果你对本系统感兴趣或有更多需求&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技…

多线程(Lock锁,死锁,等待唤醒机制,阻塞队列,线程池)

Lock锁 虽然我们可以理解同步代码块和同步方法的锁对象问题但是我们并没有直接看到在哪里加上了锁&#xff0c;在哪里释放了锁为了更清晰的表达如何加锁和释放锁&#xff0c;JDK5以后提供了一个新的锁对象Lock Lock实现提供比使用synchronized方法和语句可以获得更广泛的锁定操…

网络编程(七)网络超时检测

文章目录 一、概念二、实现方式&#xff08;一&#xff09; 使用select实现超时检测1. select函数补充说明&#xff1a;2. 使用示例3. 输出结果 &#xff08;二&#xff09; 使用setsockopt函数1. 函数定义2. 获取发送缓冲区和接收缓冲区的大小3. 端口复用4. 设置超时时间 &…

每日复盘-202406020

今日关注&#xff1a; 20240620 六日涨幅最大: ------1--------300462--------- 华铭智能 五日涨幅最大: ------1--------300462--------- 华铭智能 四日涨幅最大: ------1--------300462--------- 华铭智能 三日涨幅最大: ------1--------300462--------- 华铭智能 二日涨幅最…

华为数通企业面试笔试实验题

1. 笔试题 1.1 实验拓扑 1.2 实验要求 公司A为小型销售公司,需要实现基本上网功能,蓝色部分为外网线,提供DHCP服务 DnsServer:114.114.114.114 帮助网管排查某一台计算机在某一台交换机的某个端口 2. 操作步骤 配置路由器相关的LAN侧接口IP地址 配置DHCP项,要求有PC1与PC2…

关于椭圆的方程(有Python画的动图)

关于椭圆的方程&#xff08;有Python画的动图&#xff09; flyfish 几何定义 椭圆是平面上所有到两个固定点&#xff08;焦点&#xff09;的距离之和为常数的点的集合。这两个固定点叫做焦点。 解析几何描述 设椭圆的两个焦点为 F 1 F_1 F1​ 和 F 2 F_2 F2​&#xff…

Redis学习|Redis主从复制、Redis哨兵模式、缓存穿透、缓存击穿、缓存雪崩概念和相应解决方法

Redis主从复制 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(master/leader)&#xff0c;后者称为从节点(slave/follower);数据的复制是单向的&#xff0c;只能由主节点到从节点。Master以写为主&#xff0c;Slave 以…

深度解读:如何运用600+标签精准构建企业画像、快速筛选高价值企业?

启信慧眼-启信宝企业版 近年来&#xff0c;信息安全越来越得到企业与公众的重视&#xff0c;数据库作为数据基础设施的关键部件&#xff0c;是保障关键信息基础设施安全的重要前提。数据库不仅为企业提供了数据存储和管理的基础设施&#xff0c;还通过数据分析、优化和扩展等功…

php反序列化的一些知识

问题 <?php $raw O:1:"A":1:{s:1:"a";s:1:"b";}; echo serialize(unserialize($raw)); //O:1:"A":1:{s:1:"a";s:1:"b";}?> php反序列化的时按理说找不到A这个类&#xff0c;但是他没有报错&#xff0c;…