上周有位工作了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,有家公司要我下周一去上班。”我内心深深的叹了一口气,真不知道那家单位怎么招人的。
欢迎大家来猜猜我想考核哪些编程功底^_^
补上我写的代码,欢迎交流:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
{
publicpartialclass Form1 : Form
{
public Form1()
{
InitializeComponent();
}
privatevoid btnSend_Click(object sender, EventArgs e)
{
//获取工单信息
//生成CSV文件,格式如下,保存到特定路径下:
//印刷机名称,项目,工作,预定开始时间,预定完成时间,客户名称,项目/备注,纸张类型,总份数,交货张数,预备张数,颜色数,纸张长度,纸张宽度,纸张厚度
}
privatevoid 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+"个");
}
//将移动失败进行记录
}
//移动成功返回空,失败返回原始文件路径
privatestring MoveFile(string file, string tofile)
{
string msg ="";
try
{
File.Move(file, tofile);
}
catch(Exception ex)
{
msg = file;
MessageBox.Show(ex.ToString());
}
return msg;
}
}
}
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
{
publicpartialclass Form1 : Form
{
public Form1()
{
InitializeComponent();
}
privatevoid btnSend_Click(object sender, EventArgs e)
{
//获取工单信息
//生成CSV文件,格式如下,保存到特定路径下:
//印刷机名称,项目,工作,预定开始时间,预定完成时间,客户名称,项目/备注,纸张类型,总份数,交货张数,预备张数,颜色数,纸张长度,纸张宽度,纸张厚度
}
privatevoid 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+"个");
}
//将移动失败进行记录
}
//移动成功返回空,失败返回原始文件路径
privatestring MoveFile(string file, string tofile)
{
string msg ="";
try
{
File.Move(file, tofile);
}
catch(Exception ex)
{
msg = file;
MessageBox.Show(ex.ToString());
}
return msg;
}
}
}
作者:道无名
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。