C#(.NET)面试题:做一个能自定义输入命令的表格程序
目前为止,已经面试 5 10 家了。。。
这个试题面试的公司是某一上市公司。
试题是英文的(后面给出翻译):
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表格。

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

有效控制和正确识别指令

项目地址:
https://github.com/whuanle/GenerateTable
笔者项目上传的 ReadMe.MD 文件是英文的,翻译一下就好。主要问题也在文章这里说明了。
项目使用了 StyleCop.Analyzers 代码质量审查工具,对程序的代码质量进行审查。
无论你怎么输入,不会因为你的错误指令使程序崩溃。
使用高内聚、低耦合的思路进行设计,避免函数式、If/else式编程。

要求:
VS 2017
.Net Core (最新 2.2,可支持不同版本)
C#(.NET)面试题:做一个能自定义输入命令的表格程序的更多相关文章
- js数据类型的检测总结,附面试题--封装一个函数,输入任意,输出他的类型
一.javascript 中有几种类型的值 1.基本数据类型 : 包括 Undefined.Null.Boolean.Number.String.Symbol (ES6 新增,表示独一无二的值) 特点 ...
- 使用.NET Core快速开发一个较正规的命令行应用程序
程序员的世界,命令行工具一直是"体验非常友好"的工具,也能自动化完成很多事情,同时还能结合shell来进行某项任务的批处理(脚本).在.NET Core中,命令行应用程序是基础,但 ...
- 做一个阅读管理APP
背景 由于最近在看的书有点多,所以一直想找一个能够管理阅读进度的书(鄙人记性不是很好,两天不看就忘了)可惜Android平台上一直找不到合适的APP: 有没有读书进度管理的网站或软件啊? 有没有记录读 ...
- fir.im Weekly - 如何做一个出色的程序员
做一个出色的程序员,困难而高尚.本期 fir.im Weekly 精选了一些实用的 iOS,Android 开发工具和源码分享,还有一些关于程序员的成长 Tips 和有意思有质量的线下活动~ How ...
- 领导让我重新做一个微信H5页面!
leader:我们需要做一个微信H5页面,效果如图,功能如描述,时间越快越好. 需求是不是很简单呢?2015-11-24 12:44:00文末有最新更新 背景描述 前几天微信转发相关项目开发后,这是第 ...
- 用twisted 做一个日志收集系统
混沌初开 起初我是不会上logging模块的,直接导致了即时有了日志,我也存到了数据库中,而且量也不大,是否能遇到异常只能靠运气了 开天辟地 不得不说,没有任何输出的线上环境真的挺难调试的,当然,聪明 ...
- - 通过 UIBezierPath 做一个中空的扫描器
今天在公司的代码里看到通过 UIBezierPath 绘制 CALayer 然后实现中空的正方形,感觉还挺有意思的,简单记录一下 UIBezierPath 这个东西. 一条线 我们自定义一个 Bezi ...
- navicat与phpmyadmin做mysql的自定义函数和事件
自定义函数和事件是mysql一个很方便的功能,navicat在5.1以上版本就支持了自定义函数和事件,phpmyadmim不清楚. 用这个是由于一些简单的事情,没有必要去做一个服务器计划使用 接下来我 ...
- .Net MVC&&datatables.js&&bootstrap做一个界面的CRUD有多简单
我们在项目开发中,做得最多的可能就是CRUD,那么我们如何在ASP.NET MVC中来做CRUD呢?如果说只是单纯实现功能,那自然是再简单不过了,可是我们要考虑如何来做得比较好维护比较好扩展,如何做得 ...
随机推荐
- 【云+社区极客说】新一代大数据技术:构建PB级云端数仓实践
本文来自腾讯云技术沙龙,本次沙龙主题为构建PB级云端数仓实践 在现代社会中,随着4G和光纤网络的普及.智能终端更清晰的摄像头和更灵敏的传感器.物联网设备入网等等而产生的数据,导致了PB级储存的需求加大 ...
- python分布式爬虫打造搜索引擎--------scrapy实现
最近在网上学习一门关于scrapy爬虫的课程,觉得还不错,以下是目录还在更新中,我觉得有必要好好的做下笔记,研究研究. 第1章 课程介绍 1-1 python分布式爬虫打造搜索引擎简介 07:23 第 ...
- SQL中的go、begin、end的用法
go 向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号.go是把t-sql语句分批次执行.(一步成功了才会执行下一步,即一步一个go) BEGIN 和 END 语句 ...
- C# 很少人知道的科技
本文来告诉大家在C#很少有人会发现的科技.即使是工作了好多年的老司机也不一定会知道,如果觉得我在骗你,那么请看看下面 因为C#在微软的帮助,已经从原来很简单的,到现在的很好用.在10多年,很少人知道微 ...
- ASP.NET Url 重写
protected void Application_BeginRequest(object sender, EventArgs e) { string url = Request.AppRelati ...
- LinqProvider系列(三)如何实现自己的Linq Provider?
这篇文章将在前人的肩上,继续完成实现Linq Provider的任务. 首先,我们列出linq语法的解析过程: linq本质上就是把我们惯用的语法糖,变成了一颗表达式树,然后由不同的linq Prov ...
- webAPP 图片上传
关于webAPP 手机上传 用的vue.js 首先是js代码 调用手机app 的 相册或者自己拍照 upload: function(index) { //上传 this.index = index ...
- thinkphp 查询单个“年-月-日” FROM_UNIXTIME
*时间格式转换,使datetimepicker.js 能够搜索 查询 单个 年月日而不需是区间 查询. //另起一行看转换结果 select *,FROM_UNIXTIME(CreateTime,'% ...
- 分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC (转载 不错)
分布式理论基础(一)一致性及解决一致性的两种方式:2PC和3PC 1 一致性 1.1 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的 假设一个具有N个节点的分布式系统,当 ...
- 简单的PHP的任务队列
文章太长,不作过多介绍,反正,文章的头部就说明了大概的意思...原文如下:写了一个简单的队列任务处理.多进程任务,异步任务可能会用到这个(主要是命令行应用)比如,任务的某个一个环节速度十分不稳定,可能 ...