p***o 发帖数: 1252 | 1 好像不调库自己写很简单,其实连corner case在哪儿都不知道。 |
g****t 发帖数: 31659 | 2 如果是实际操作,反正我不搞parse。坑太多。
路线是:
1.找库用。
2.检查。
除了分文件或者读内存这一步,剩下的不会自己写。
【在 p***o 的大作中提到】 : 好像不调库自己写很简单,其实连corner case在哪儿都不知道。
|
m******r 发帖数: 1033 | 3 我都是找库用, 从来没写过程序, 因为我也不会写程序。
不过用的库多了, 谁好谁坏, 也很有心得 。
别说csv了, pdf, xls,adoby,xml我都分解过。
你们谁分解过xml ? 我一个人干了一个月,当然是磨洋工了。 其实只要肯花时间,都
能弄出来。 我说不如找实习干, 说的就是这个意思,可以实验不同方案。
还有分解家庭住址,肯花钱,肯定有第三方厂商给你弄出来; 不肯花钱,免费的软件
到处都是。 但要做到精益求精, 还得自己花时间倒腾。
以上都是数据爱好者瞎叨叨, 一家之言, 别当真。 |
f*******t 发帖数: 7549 | 4 不知道那个楼主为什么非要坚持c/c++。既然单机、数据量不是特别大,这种事情就应
该找更高级的语言,有特殊性能问题再想别的办法。我常用的面试题里正好有一步要
split string by comma,这些年面过几百个人,选择用C/C++的candidate在这里挣扎
的概率大于80%,剩下来的勉强手写一个for loop。另一步用一个HashMap解决最简单,
C++直接提供了unordered_map,C嘛只能呵呵了。看简历不少人有多年硬件公司的经验
。希望他们原公司的开发环境舒服点,别每天花时间在简单的任务上给自己找别扭,或
者没事重复造轮子。
推荐perl甚至awk之类的有点过了,学习曲线太长,而且写出来的东西基本不可维护。
我看了一下,python原生支持csv,所以不妨先试试系统可能自带的Python环境,也别
上来就Pandas。
Go本身性能可以,用自带的csv package出现surprise的可能性很小。综合考虑下也是
不错的选择。要自己安装的话也只是去官网下载tar,解压到文件夹,设置PATH三步。
开源c++库别的不说,git clone以后能直接编译的恐怕不多。一看readme,先得装一堆
libxxxx,然后编译继续不过,不断google error message然后安装没有document的
libyyyy。我觉得程序员有时间应该花在有意义的事上,不然就去享受生活,何苦折腾
这些。
工作中生产力最低的就是那种觉得自己手写csv parser了不起的,代码写完拍拍屁股走
人,给未来留下一堆堆的坑。 |
n******t 发帖数: 4406 | 5 又來了,又是覺得這件事很難搞的。。。
我就要看看這麼一個東西到底要扔出多少輪子出來。。
【在 f*******t 的大作中提到】 : 不知道那个楼主为什么非要坚持c/c++。既然单机、数据量不是特别大,这种事情就应 : 该找更高级的语言,有特殊性能问题再想别的办法。我常用的面试题里正好有一步要 : split string by comma,这些年面过几百个人,选择用C/C++的candidate在这里挣扎 : 的概率大于80%,剩下来的勉强手写一个for loop。另一步用一个HashMap解决最简单, : C++直接提供了unordered_map,C嘛只能呵呵了。看简历不少人有多年硬件公司的经验 : 。希望他们原公司的开发环境舒服点,别每天花时间在简单的任务上给自己找别扭,或 : 者没事重复造轮子。 : 推荐perl甚至awk之类的有点过了,学习曲线太长,而且写出来的东西基本不可维护。 : 我看了一下,python原生支持csv,所以不妨先试试系统可能自带的Python环境,也别 : 上来就Pandas。
|
g****t 发帖数: 31659 | 6 【1】你给的split string by comma面试题,想必是给定windows格式的csv文件,而且
还不
能是excel写出来的,以及notpad写出来的,还不能有unicode,还不能有forward slash
,还不能有行中的回车。
【2】不然,这些情况都考虑下来,作为面试题,难度高了点。不太可能不查资料都记
住。也没这个必要。
【3】因此,经过上面一段推理。如果是面试场景,被面试者应该有能力自行假设【1】
所讲的的最简化假设。
【4】
在【1】的假设下用c写,也就20行。白板写不出,就说明不熟悉c标准库。最简单的,
fread然后fgetc,读一个
character,指针走一位。分支循环查一下comma完事。如果这都写不出,那
确实是不合格。 |
y****w 发帖数: 3747 | 7 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。
怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部分现成库干掉
,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是当练习re的,
这个回车破坏力蛮大耽误不少功夫,最后代码看着简单其实费力太多了。
slash
就应
挣扎
单,
经验
,或
护。
也别
【在 g****t 的大作中提到】 : 【1】你给的split string by comma面试题,想必是给定windows格式的csv文件,而且 : 还不 : 能是excel写出来的,以及notpad写出来的,还不能有unicode,还不能有forward slash : ,还不能有行中的回车。 : 【2】不然,这些情况都考虑下来,作为面试题,难度高了点。不太可能不查资料都记 : 住。也没这个必要。 : 【3】因此,经过上面一段推理。如果是面试场景,被面试者应该有能力自行假设【1】 : 所讲的的最简化假设。 : 【4】 : 在【1】的假设下用c写,也就20行。白板写不出,就说明不熟悉c标准库。最简单的,
|
g****t 发帖数: 31659 | 8 面试的人自己也未必清楚文本文件,csv怎么回事。
简化情况,不想太复杂。
: 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。
: 怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部
分现成
库干掉
: ,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是
当练习
re的,
: 这个回车破坏力蛮大耽误不少功夫,最后代码看着简单其实费力太多了。
: slash
: 就应
: 挣扎
: 单,
: 经验
: ,或
【在 y****w 的大作中提到】 : 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。 : 怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部分现成库干掉 : ,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是当练习re的, : 这个回车破坏力蛮大耽误不少功夫,最后代码看着简单其实费力太多了。 : : slash : 就应 : 挣扎 : 单, : 经验
|
f*******t 发帖数: 7549 | 9 你又过度脑补了,实际情况远没那么复杂……
其实题目很简单,我也是过来人,知道刷题不易,出一道自己几个月不练一小时内写不
对的难题纯粹是有心理疾病。input是个简单的string,没有塞一堆无意义的corner
case为难candidate。只要稍微问一下,我就会很爽快地告诉他们,只有一行,没有奇
怪的字符,没有corner case……啥都不问上来吭哧写的一般会自己卡住,过一会儿慌
了,fail的可能性比较大。Problem probing是很重要的考量方向,这个直接跟实际工
作能力相关,比了解csv重要得多。公司里在我熟悉的组里,真正需要处理乱七八糟的
csv的大概只有管ads offline conversion的,有很多vendor上传的信息,可想而知是
有很多坑的。绝大部分人不会碰到调用已有lib解决不了的问题,所以问这个是浪费时
间。
用C的我实在是无力吐槽。如果选择用strtok去split string,印象中只有一个人写的
看上去是对的。解决另一步用HashMap最简单,想到这个的经常会定义一个全局的char
map[128],hardcode size看着很难受。这些用C的人就没个handy的hashmap lib么?
slash
【在 g****t 的大作中提到】 : 面试的人自己也未必清楚文本文件,csv怎么回事。 : 简化情况,不想太复杂。 : : : 需求明确好说,没有直观正则解的话其实挨个字符读算法反而简单多了。 : : 怕的是后面忽然发现个新的边界条件特殊用例。 行中回车估计能把大部 : 分现成 : 库干掉 : : ,虽然自己挨个字符搞也不难,问题是这还是csv吗? 我以前写parser是 : 当练习 : re的,
|