回复: 8
跳转到指定楼层
上一主题 下一主题
收起左侧

面试assignment:从txt文件里读取2百万行double数字。

全局:

2016(1-3月) 码农类General 本科 全职@LA小公司 - 网上海投 - 其他  | | Other | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
求助一道面试题的解法。一家小公司,经历了OA, HR面,技术电面,最后还有个assignment,做完发过去对方表示要求改进,也是醉了。。。


题目要求大概是从一个TXT文件里读取2 million个double数字,然后用scatter plot显示出来,用Java。现在难点就在怎么高效读取这2 million个数字。
TXT文件中每个数字一行(最左边是index,可以理解成X coordinate, 右边的巨长的数字就是对应的y coordinate了), 从左往右大概长这样:
1        -54.72667778993478
2        -0.1853811220527842
3        -21.05360038908366
4        27.73363348487282
5        -23.62219135594701
6        -56.01573967610933
7        34.08019445333898
8        20.06996064538601
9        60.77511214805872
10        16.44672527397671


刚开始俺很土鳖的用了BufferedReader一行一行的读取,然后还得替换其中的空格,找到y coordinate,大概这样:

private static List<List<Double>> readFile() {
        List<List<Double>> data = new ArrayList<List<Double>>();
        List<Double> dataX = new ArrayList<Double>();
        List<Double> dataY = new ArrayList<Double>();
        String delimiter = SPACE;
        try {

            long start = System.currentTimeMillis();

            File file = new File(
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
fIn.close();
            data.add(dataX);//可要可不要
            data.add(dataY);

            long end = System.currentTimeMillis();
            System.out.println();
            System.out.println("time1: " + (end - start) + " size is" + dataY.size());
        } catch (IOException exc) {
            System.out.println(exc);
            System.exit(1);
        }
        return data;
    }


我感觉这行代码比较浪费时间:
if (sb.charAt(sb.length()-1) == '\n')
但是实在不知道怎么更好的实现。求各位大神指导啊~~~


另外,对方还表示画出来的点(其实是Rectangle2D.Double),zoom in(要求实现的功能之一)之后会pixelate,这个怎么搞?

上一篇:面经,KLA-Tencor + Google + Microsoft
下一篇:[Google Intern 面经] 3/11/2016 两轮
推荐
 楼主| GUIXIANG 2016-3-13 02:36:15 | 只看该作者
全局:
csddff 发表于 2016-3-12 16:31
这可能就是Jeff Atwood所倡议的“试镜”了,直接给你分一个他们实际工作中遇到的小问题,要你搞定,来看你 ...

太费时间,如果做完不给offer,按照现在工资标准给点儿补助还能接受lol
回复

使用道具 举报

🔗
 楼主| GUIXIANG 2016-3-12 16:17:57 | 只看该作者
全局:
最后一句话没说明白。。。zoom in已经用BufferedImage.getScaledInstance实现了,但是对方表示zoom in 之后会pixelate,这个该怎么避免呢?
回复

使用道具 举报

🔗
wcyz666 2016-3-12 16:26:42 | 只看该作者
全局:
如果每一行的长度都是一样的,就用RandomAccessFile开多线程或者上ExecutorService去读?没实践过。。。
回复

使用道具 举报

🔗
csddff 2016-3-12 16:31:44 | 只看该作者
全局:
这可能就是Jeff Atwood所倡议的“试镜”了,直接给你分一个他们实际工作中遇到的小问题,要你搞定,来看你真实的工作能力
回复

使用道具 举报

🔗
 楼主| GUIXIANG 2016-3-13 02:34:58 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
wcyz666 2016-3-13 05:41:51 | 只看该作者
全局:
GUIXIANG 发表于 2016-3-13 02:36
太费时间,如果做完不给offer,按照现在工资标准给点儿补助还能接受lol

那就有一个工作队列吧,有一个线程只负责读,一千行就打包成一个task进队列让worker线程去处理task
回复

使用道具 举报

🔗
 楼主| GUIXIANG 2016-3-14 09:32:30 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
 楼主| GUIXIANG 2016-3-18 12:19:03 | 只看该作者
全局:
发邮件表示这都前前后后一个月了,求本周给答复,然后被拒。
move on~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表