面试题合集

技术教程 · 2018-09-03

2019-3-29富途面试
一面技术面就挂了,上来就笔试题,一共5道题,我做了将近一个小时,还没能全答出来,基础知识,得好好巩固了。

  • TCP连接中启用和禁用TCP_NODELAY有什么影响? - 车小胖的回答 - 知乎
  • map,set时间复制度问题:因为map底层是红黑树,所以增删查的时间复杂度都是O(logN),hashmap时间复杂度是O(1)
  • int a = (int)((int)(0)+4); a=? 为什么?答案是:16,这里涉及指针+整数运算.因为(int )0是把有符号整数0强制为int 型指针,这个指针的目标元素是int型,占4字节;((int )0)+4是“指针+整数”结构,这时的整数就被解释为元素个数,1个元素4字节,4个元素自然是16字节,且这个16被自动提升为(int )0的类型,亦即int 指针类型;最前面的(int)又把int *指针类型的16强制为普通的int型,所以在32位int平台下最终结果是整型值16。
  • 请找出下面代码中的所有错误 (题目不错,值得一看)

说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

#include"string.h"
main()
{
    char*src="hello,world";
    char* dest=NULL;
    int len=strlen(src);
    dest=(char*)malloc(len);
    char* d=dest;
    char* s=src[len];
    while(len--!=0)
        d++=s--;
    printf("%s",dest);
    return 0;
}

答:
方法 1:一共有 4 个错误;

int main()
{
    char* src = "hello,world";
    int len = strlen(src);
    char* dest = (char*)malloc(len+1);//要为分配一个空间 char* d = dest;
    char* s = &src[len-1]; //指向最后一个字符
    while( len-- != 0 )
        *d++=*s--;13 
    *d = 0; //尾部要加’\0’
    printf("%sn",dest);
    free(dest); // 使用完,应当释放空间,以免造成内存汇泄露
    dest = NULL; //防止产生野指针
    return 0;
}

编程题:写一个C语言函数,去掉字符串中的所有空格,并返回字符串中的空格数,不能申请新的空间,只能申请使用自动变量。
当时的回答是(当时用的是string,应该是C++语言了,囧,但是能正确处理):

int trim(char *str, int n)
{
    int space = -1;
    int count = 0;
    for (int i = 0; i < n; i++)
    {
    if (str[i] == ' ')
    {
        count++;
        if (space == -1)
            space = i;
    }
    else
    {
        if (space != -1)
        {
            str[space] = str[i];
           space++;
        }
    }
    }
    str[space] = '\0';
    return count;
}

Mysql相关

网络相关

基础知识

mysql
Theme Jasmine by Kent Liao