zoukankan      html  css  js  c++  java
  • 亚控科技笔试面试记录

    笔试

    可以参考:https://www.cnblogs.com/wft1990/p/6545446.html

    以下仅是回忆起的题目

    1  回答下面的问题(6分)

      (1).Void GetMemory(char **p, int num){

      *p = (char *)malloc(num);

      }

      void Test(void){

      char *str = NULL;

      GetMemory(str, 100);

      strcpy(str, "hello");

      printf(str);

      }

      请问运行Test 函数会有什么样的结果?

      答:输出“hello”

      (2). void Test(void){

      char *str = (char *) malloc(100);

      strcpy(str, “hello”);

      free(str);

      if(str != NULL){

      strcpy(str, “world”);

      printf(str);

      }

      }

      请问运行Test 函数会有什么样的结果?

      答:输出“world”。

      这里仔细理解下free的意义,free函数只是释放指针指向的内容,而该指针仍然指向原来指向的地方(str != NULL)

      此时,指针为野指针,如果此时操作该指针会导致不可预期的错误。安全做法是:在使用free函数释放指针指向的空间之后,将指针的值置为NULL

      (3). char *GetMemory(void){

      char p[] = "hello world";

      return p;

      }

      void Test(void){

      char *str = NULL;

      str = GetMemory();

      printf(str);

      }

      请问运行Test 函数会有什么样的结果?

      答:无效的指针,输出不确定

    2 编写strcat函数(6分)

      已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);

      其中strDest 是目的字符串,strSrc 是源字符串。

      (1)不调用C++/C 的字符串库函数,请编写函数 strcat

      答:

      VC源码:

      char * __cdecl strcat (char * dst, const char * src)

      {

      char * cp = dst;

      while( *cp )

      cp++; /* find end of dst */

      while( *cp++ = *src++ ) ; /* Copy src to end of dst */

      return( dst ); /* return dst */

      }

      (2)strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?

      答:方便赋值给其他变量

      参考:https://www.cnblogs.com/zkfopen/p/11059521.html

    3  int i=10, j=10, k=3; k*=i+j; k最后的值是?

      答:60,此题考察优先级,实际写成: k*=(i+j);,赋值运算符优先级最低

    4 写出float x 与“零值”比较的if语句。

      答:if(x>-0.000001 & x<0.000001)

          printf("x 是零 ");

    5 堆栈溢出一般是由什么原因导致的?

      答:没有回收垃圾资源。

    6 多态的作用

      答:1 不必编写每一子类的功能调用,可以直接把不同子类当父类看,屏蔽子类间的差异,提高代码的通用率/复用率
        2 父类引用可以调用不同子类的功能,提高了代码的扩充性和可维护性

    7 进程通信方法及线程同步机制区别

      答:参考:https://blog.csdn.net/eulb/article/details/2177500

    8 为什么构造函数没有返回值?构造函数失败怎么处理?

      答:https://blog.csdn.net/tangaowen/article/details/1818819

        https://blog.csdn.net/wind19/article/details/8213114

    9 数字字符串转换成这个字符串对应的数字(十六进制)

       要求:这个字符串参数必须包含一个或者多个数字,函数应该把这些数字转换为整数并且返回这个整数。如果字符串参数包含任何非数字字符,函数就返回零。不必担心算数溢出。

      答:https://www.cnblogs.com/zkfopen/p/11060685.html

     

     面试

    1 虚函数的作用,虚函数的实现原理

      答:https://www.cnblogs.com/zkfopen/p/11061414.html

    2  什么是野指针?野指针的危害?如何避免野指针?

      答:野指针是随机指向一块内存的指针,野指针不是NULL指针。

        野指针可能会造成内存泄露的危害。(注意:野指针不会一定造成内存泄露,如果该野指针指向的内存刚好是某个变量的地址,那么野指针也能使用这块内存)。

        我们要在以后养成良好的编码习惯:

        1.将没有指向的指针初始化指向NULL(指向NULL的指针不能对他的指向进行修改)

        2.当想给一个指针指向的空间赋值时,一定要给这个指针分配空间(malloc)

        3.当空间分配完后,要检查这个指针的空间是否分配成功

        4.当空间分配完后,要先将这块内存初始化(memset,bzeor)

        5.当这块内存使用完后,必须将这块内存释放(free)

        6.释放完空间后,将指针再次指向NULL(防止这个指针再次成为野指针)

    3 对代码规范的理解

      答:

        若想写出一个好的代码,我觉得应该可以具体的从以下细节进行训练。
        1.排版
        2.注释
        3.标识符命名
        4.可读性
        5.变量,结构
        6.函数,过程
        7.可测性
        8.程序效率
        9.质量保证
        10.代码编辑,编译,审查
        11.代码测试及维护
        12.宏

  • 相关阅读:
    jvm 致命问题分析
    java 包引入时*会全部加载吗
    JDK压缩指针
    ArrayList && HashMap扩容策略
    数据结构对齐 堆对齐 栈对齐
    TLS Thread Local Storage
    vue2 设置网页title的问题
    error ...项目路径 ode_moduleschromedriver: Command failed.
    Vue打包后出现一些map文件
    'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序
  • 原文地址:https://www.cnblogs.com/zkfopen/p/11061466.html
Copyright © 2011-2022 走看看