由买买提看人间百态

topics

全部话题 - 话题: currentpos
(共0页)
s********u
发帖数: 1109
1
来自主题: JobHunting版 - ebay skype interview面经(4轮)
挖个坟,这个readline的题目,搜了一下,好像应该是这个意思吧:
用一个buffer来存字符流,如果中间有换行,那么将这一行返回成一个字符串输出,但
是这个buffer里面的东西继续保留,下次readline()再输出;
如果一行非常长,那么可能需要用到几次read(),来拼出这个完整的line。
/*Implement a function char* readLine(); which returns single lines from a
buffer.
To read the buffer, you can makes use of a function int read(char* buf, int
len) which fills buf with upto len chars and returns the actual number of
chars filled in. Function readLine can be called as many times as desired.
If there is no valid data or newline ter... 阅读全帖
s********u
发帖数: 1109
2
这是readline那个题我参照网上的代码写的。比这个要复杂一些,因为一个line的字符
是不确定的。
#define MAX_LEN 4096
int read(char* buf, int len);
char *readLine(){

static bool EOF = false;
char *str = NULL;
int i, size = 0;

static int currentPos = MAX_LEN;

static char* buffer = new char[MAX_LEN];

while(!EOF || currentPos != MAX_LEN ){

// buffer is not empty, handle buffer first
if(currentPos != MAX_LEN){

for(i = currentPos; i < MAX_LEN; i++)
... 阅读全帖
s********u
发帖数: 1109
3
来自主题: JobHunting版 - 请教一个fb面试问题
老题了吧,不过老要写错,尤其是那个read4写read的更恶心。
#define MAX_LEN 4096
int read(char* buf, int len);
char *readLine(){

static bool EOF = false;
char *str = NULL;
int i, size = 0;

static int currentPos = MAX_LEN;

static char* buffer = new char[MAX_LEN];

while(!EOF || currentPos != MAX_LEN ){

// buffer is not empty, handle buffer first
if(currentPos != MAX_LEN){

for(i = currentPos; i < MAX_LEN; i++)
if( buffer[i] ==... 阅读全帖
r****k
发帖数: 21
4
来自主题: JobHunting版 - 昨天的F家店面
#define MAX_BUFFER_SIZE 4096
extern char *read4096();
char buffer[MAX_BUFFER_SIZE+1];
char *readline()
{
static int EOF = 0;
static int currentPos = MAX_BUFFER_SIZE;

char *s = NULL;
int i, ssz = 0;

for(;;)
{
if (!EOF)
{
// buffer is not empty, check buffer
if (currentPos != MAX_BUFFER_SIZE)
{
for ( i = currentPos; i < MAX_BUFFER_SIZE; i++)
if (buffer[i] = '\0' || buffer[i] = '... 阅读全帖
c*********m
发帖数: 43
5
来自主题: JobHunting版 - 新鲜夫家onsite面经
最后一题写了个,大家看看有啥bug没
#define MAX_BUFFER_SIZE 10 * 1024
extern int fetch10k(char *buffer);
char temp[MAX_BUFFER_SIZE + 1];
int fetch(int size, char *buffer)
{
assert(size > 0 && buffer != NULL);
static int currentPos = 0;

string s;
int currSize = 0;
static int len = 0;

while (1)
{
if (currentPos != len)
{
int i;

for (i = currentPos; i < len; i++)
{
... 阅读全帖
w*******e
发帖数: 395
6
来自主题: JobHunting版 - 请教一个fb面试问题
你的代码好像有问题。
如果read()没有读满max_size, eof已经为1了,这个时候buffer是没有填满的。在此之
前如果hit了一个‘n’。currentPos会记录'n‘后面的一个位置。
当第二次进入该函数的时候,你的while循环会从currentPos一直都到buffer的尾端,
而实际上,由于上次hit了eof,buffer是没有填满的。你的代码读入了一些多余的数据。
p**2
发帖数: 613
7
看时间,感觉时间充裕当然写全比较好
如果觉得时间不够,那就缩写,但是但是也别abc,
类似indexLeft你至少用过il,ir
currentPos可以写成cp,或者cur等。
或者就算你想写单个字母,也稍微注意一下
比如two pointer的时候可以写
s=0,e=n.Length-1
至少面官不用问你就可以猜到啥意思。
(共0页)