一道简单的编程题考核你的编程功底

上周有位工作了3年多的程序员(一直在企业做应用开发)来面试,本来打算不安排上机编程的,但是他开出了6K的薪资要求,我还是决定考核下他的编程功底。

刚好最近企业在做生产流程信息流对接这块的开发,我就提取出实际项目中我做过的模块,看他是怎么来实现的。

界面截图:

说明:

将原始PPF路径下的所有文件搬迁到目标PPF路径下,并按照以下规则对文件进行命名。

如果原始文件名符合格式"A B.C.D.E",则另存为"A.C.D.E"。其中A,B,C,D,E 为任意数字、字母或中文,且A中不允许包括空格,A与B之间存在空格。

如原文件名为"03120001-1 杭州某客户0312ZS001红豆衫[a].1A.CMYK.ppf",则搬迁后文件改名为"03120001-1.1A.CMYK.ppf"。

如果不符合格式,则不搬迁。

最后提示搬迁了多少个文件,哪些文件无法搬迁。

听了我的描述,问他是否对需求还有不理解的地方,在确定理解了需求之后,他说给他半小时时间。

我心想,不久文件遍历和移动功能,以及对另存文件名的解析嘛,需要半小时吗?于是我允许他查询百度和google,允许拷贝他人代码,结果他90分钟都没能完成,更别谈我这道题要考核的目的了。

后面的面试也只是走个形式罢了,毕竟对方来一趟也不容易。但最后的一句话深深的触动了我。我问他3-4K能接受吗?他说“我的要求还是6K,有家公司要我下周一去上班。”我内心深深的叹了一口气,真不知道那家单位怎么招人的。

欢迎大家来猜猜我想考核哪些编程功底^_^

补上我写的代码,欢迎交流:

View Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Chenrl
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnSend_Click( object sender, EventArgs e)
{
// 获取工单信息
// 生成CSV文件,格式如下,保存到特定路径下:
// 印刷机名称,项目,工作,预定开始时间,预定完成时间,客户名称,项目/备注,纸张类型,总份数,交货张数,预备张数,颜色数,纸张长度,纸张宽度,纸张厚度

}

private void btnFileMove_Click( object sender, EventArgs e)
{
StringBuilder msg
= new StringBuilder();
// msg.Append("无法处理以下文件:");
string sppf = txtSPPF.Text;
string tppf = txtTPPF.Text;
string pq4 = txtPQ4.Text;
int cl = 0 ;
int okcount = 0 ;
try
{
// 获取文件
string [] files = System.IO.Directory.GetFiles(sppf);
foreach ( string file in files)
{
// 以下是对移动后的目标文件名进行处理
// 从文件名中提取到工单号:约定文件名中第一个空格之前的内容为工单号
// 保留倒数第3个.之后的内容,列如.1A.CMYK.ppf 或者 .2A.CMYK.ppf
// 如果用正则解析和处理字符串,效果更佳~~~

// 先解析出文件夹和文件名
string path = file.Substring( 0 , file.LastIndexOf( @" \ " ) + 1 );
string name = file.Replace(path, "" );
string [] cfile = name.Split( ' . ' );
cl
= cfile.Length;
if (cl >= 4 )
{
if (cfile[ 0 ].IndexOf( ' ' ) > - 1 )
{
string tofile = tppf + cfile[ 0 ].Substring( 0 , cfile[ 0 ].IndexOf( ' ' ))
+ " . " + cfile[cl - 3 ] + " . " + cfile[cl - 2 ] + " . " + cfile[cl - 1 ];
if (MoveFile(file, tofile).Length == 0 )
{
okcount
++ ;
}
}
else
{
msg.Append(
" \r\n " );
msg.Append(file);
}
}
else
{
msg.Append(
" \r\n " );
msg.Append(file);
}
}
}
catch (Exception ex)
{
msg.Append(
" /r/n出现以下异常: " );
msg.Append(ex.ToString());
}
if (msg.ToString().Length > 0 )
{
// MessageBox.Show(msg.ToString());
MessageBox.Show( " 操作完成!\r\n成功移动文件: " + okcount + " " + " \r\n无法处理以下文件: " + msg.ToString());
}
else
{
MessageBox.Show(
" 操作完成!\r\n成功移动文件: " + okcount + " " );
}

// 将移动失败进行记录
}

// 移动成功返回空,失败返回原始文件路径
private string MoveFile( string file, string tofile)
{
string msg = "" ;
try
{
File.Move(file, tofile);
}
catch (Exception ex)
{
msg
= file;
MessageBox.Show(ex.ToString());
}
return msg;
}


}
}

转载于:https://www.cnblogs.com/yfyy/archive/2011/03/16/1985962.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值