C#(.NET)面试题:做一个能自定定义输入命令的表格程序

简介: C#(.NET)面试题:做一个能自定定义输入命令的表格程序

这个试题面试的公司是某一上市公司。

试题是英文的(后面给出翻译):

you're given a task of writing a simple program where an and user will be able performing some basic spreadsheet operation(i.e. sum)

in a nutshell,the program should work as follows:

  • create a new spread shee
  • add number in different cells and perform some caculation on top of specific row or column
  • Quit


您可以编写一个简单的程序,其中一个和用户可以执行一些基本的电子表格操作(即SUM)。


简而言之,程序的工作方式如下

  • 能够创建新的电子表格
  • 在不同的单元格中添加数字,并在特定的行或列的顶部执行一些计算
  • 能够退出

Commamd 命令 Description 描述
C w h

should create a new spread sheet of width w and height h(i.e. the spreadsheet can hold w * h amount of cells)

应该创建一个宽度为w、高度为h的新电子表格(即电子表格可以容纳w*h的单元格数量)

N x1 y1 v1

should insert a number in specificed cell(x1,y1)

应在特定单元格中插入数字(x1,y1)

S x1 y1 x2 y2 x3 y3

should perform sum on top of all cells from x1 y1 to x2 y2 and store the result in x3 y3

应该在x1 y1到x2 y2的所有单元格上执行求和,并将结果存储在x3 y3中

Q

Should quit the program

退出程序

 

you can write a console or browser application that will pro vide the interactive user experience in c# or javascript,mentioned in the problem statement

you can consider your choice of testing framework

assume each cell will allocate at most 3 characters,thus numbers given here should be right justified accordingly

please provide a read me document or text file,along with the submitted code,detailing instruction of running the application and tests,design considerations etc

the code is required to be hosted in apeivate repository in bitbucket. Bitbucket allows user create free private respositories


您可以编写一个控制台或浏览器应用程序,以提供C# 或javascript中提到的交互式用户体验

您可以考虑选择测试框架

假设每个单元格最多分配3个字符,因此此处给出的数字应相应地右对齐。

请提供一份自述文件或文本文件,连同提交的代码、运行应用程序和测试的详细说明、设计注意事项等。

代码需要托管在BitBucket中的Apeivate存储库中。BitBucket允许用户创建免费的私人呼吸

 

besides the code quality,we'll also check how you commit code(i.e. frequency,quality of commit comment,quality unit of code being committed etc)

the following assessment criteria's will be considered on the submitted code:

code quality(whether its following best practices with regard to design principles,patterns,algorithms)

if the program is validating user data,and considering edge cases

is the program is tested accordingly


除了代码质量,我们还将检查您如何提交代码(即频率、提交注释的质量、提交的代码的质量单位等)

提交的代码将考虑以下评估标准:

代码质量(是否遵循设计原则、模式、算法方面的最佳实践)

如果程序正在验证用户数据,并考虑边缘情况

程序是否被相应地测试


就是说设计一个程序,使程序能够捕获用户输入,并且能够创建表格、处理单元格内容。当然这不是指Excel表格。


微信图片_20220501152040.png


要求是:

  • 能够处理以上列出的命令,完成功能逻辑。并且能够识别、处理无效指令
  • 避免出现异常,能够正确处理程序
  • 能够限制表格边界
  • 正确处理用户指令,用户输入的指令错误、超出预设范围等时,程序不出现崩溃。
  • 每个单元格只能有三个字符,不足三个字符时,左对齐


我实现的程序如下(gif动图)


微信图片_20220501152043.gif


有效控制和正确识别指令


微信图片_20220501152048.gif


项目地址:

https://github.com/whuanle/GenerateTable


笔者项目上传的 ReadMe.MD 文件是英文的,翻译一下就好。主要问题也在文章这里说明了。


项目使用了 StyleCop.Analyzers 代码质量审查工具,对程序的代码质量进行审查。

无论你怎么输入,不会因为你的错误指令使程序崩溃。


使用高内聚、低耦合的思路进行设计,避免函数式、If/else式编程。


微信图片_20220501152053.png

 

要求:

VS 2017

.Net Core (最新 2.2,可支持不同版本)

 

相关文章
|
5月前
|
C#
一文搞懂:一道关于C#linqwhere的面试题
一文搞懂:一道关于C#linqwhere的面试题
39 0
|
3月前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
【IO面试题 五】、 Serializable接口为什么需要定义serialVersionUID变量?
serialVersionUID用于标识类的序列化版本,确保在反序列化时类的版本一致性,避免因类定义变更导致的不兼容问题。
|
3月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
72 8
|
3月前
|
Go 数据库 UED
[go 面试] 同步与异步:程序执行方式的不同之处
[go 面试] 同步与异步:程序执行方式的不同之处
|
3月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
62 4
|
4月前
|
消息中间件 Kafka 数据库
面试题Kafka问题之Kafka中的消息(Message)定义如何解决
面试题Kafka问题之Kafka中的消息(Message)定义如何解决
38 1
|
4月前
|
存储 数据库 索引
面试题ES问题之动态映射的定义如何解决
面试题ES问题之动态映射的定义如何解决
35 1
|
4月前
|
设计模式 安全 Java
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
Java面试题:设计模式如单例模式、工厂模式、观察者模式等在多线程环境下线程安全问题,Java内存模型定义了线程如何与内存交互,包括原子性、可见性、有序性,并发框架提供了更高层次的并发任务处理能力
70 1
|
5月前
|
SQL 存储 前端开发
程序技术好文:面试知识点六:JavaWeb
程序技术好文:面试知识点六:JavaWeb
48 1