回复: 5
收起左侧

Rubrik 电话面经

本楼:   👍  0
0%
0%
0   👎
全局:   54
76%
24%
17

2017(4-6月) 码农类General 博士 全职@rubrik - 内推 - 技术电面  | Other | 在职跳槽

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

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

x
Read4k 变种

// Read4K - Given a function which reads from a file or
// network stream up to 4k at a time, give a function which
// which can satisfy requests for arbitrary amounts of data
private int read4K(char[] buf) {
  // G
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
口的情况(如果端口慢,导致一次读4k的时候,有可能读不到4K,但不是End of File,所以应该继续读)

评分

参与人数 2大米 +82 收起 理由
ljclin + 2 很有用的信息!
zj45499 + 80

查看全部评分


上一篇:fb 电面
下一篇:Snapchat电面--坑爹的Double

本帖被以下淘专辑推荐:

  • · Rubrik|主题: 18, 订阅: 3
无效楼层,该帖已经被删除
 楼主| yangguo1220 2017-5-7 14:23:33 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   54
76%
24%
17
我想的是 只能再叫一次Read4k,假设如果是EOF, 返回-1,如果不是EOF (就是网络端口慢),回复的不是-1,可以是[0, 4k]之间。但是返回的东西必须保留在一个临时buffer, 再拷贝到永久的buffer. 不知道思路对不对
扫码关注一亩三分地求职移民公众号
更多干货内容等你发现
回复

使用道具 举报

 楼主| yangguo1220 2017-5-7 14:23:46 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   54
76%
24%
17
我当时写的代码:

// IMPLEMENT:
public int read(char[] buf, int toRead) {
  // read4k
  char[] buffer = new char[4];
  int readBytes = 0;
  int eof = 0; // if eof, eof var = -1;
  //int slow = false;
  // (1) eof = -1 -> reach to the End of File
  // (2) readBytes > toRead
  while (eof != -1 && readBytes < toRead) {
    int size_first = read4K(buffer);
    if (size_first < 4) {
      // eof
      // socket just have less than 4k
      char[] extra = new char[4];
      int size_second = read4K(extra);
      
      if (size_second == -1) {
        eof = -1;
      } else {
        int bytes_second = Math.min(toRead - readBytes, size_second);
        System.arraycopy(extra, 0, buf, readBytes, bytes_second);
        readByte = readByte + size_second;
      }
    }
    int bytes_first = Math.min(toRead - readBytes, size_first);
    System.arraycopy(buffer, 0, buf, readBytes, bytes_first);
    readBytes = readBytes + size_first;
  }
  
  return readBytes;
  
}
回复

使用道具 举报

say543 2017-5-8 15:03:44 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   122
92%
8%
11
yangguo1220 发表于 2017-5-7 14:23
我想的是 只能再叫一次Read4k,假设如果是EOF, 返回-1,如果不是EOF (就是网络端口慢),回复的不是-1,可以 ...

所以保证不会读两次 都是因为netwrok 而return -1 是吗?
回复

使用道具 举报

seekingJob320 2017-5-17 14:07:12 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   265
98%
2%
6
谢谢楼主的信息,
回复

使用道具 举报

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

本版积分规则

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