思维导图:文件IO有道云笔记
进程线程有道云笔记
1、标准IO和文件IO区别?
标准IO和文件IO都是会通过系统调用最终完成读写等操作,不同点是标准IO对文件操作是通过文件指针,且不会直接与内核空间进行调用,而是在两者之间设立一个缓冲区,在等待缓冲区刷新后再使用系统调用,文件IO是一直进行系统调用输入一个调用一次因此效率较低,对文件操作使用文件描述符。
2、简述系统调用?
内核空间提供的函数,每次进行系统调用,系统会从用户空间向内核空间进行一次切换,频繁进行系统调用会导致程序执行效率低。
3、简述静态库和动态库的区别?
两者都是为了保护版权,将原文件转化成二级制文件,再给别人的时候无法看到原码,只能通过计算机使用。连这个和都是通过gcc编译器生成.o文件,但是静态库会把所有要用到的参数都放到啊a.out里去,所以不需要对库进行操作,缺点是占用可执行文件大小,优点是调用比较方便高效;而动态库在调用时需要找到库的位置,调用函数效率比较低,但是相对的动态库不会占用可执行文件很多文件,且可以连接到一个库中。
4、判断一个括号字符串是否匹配正确,如果括号有多种,怎么做?如(([]))正确,[[(()错误
是使用栈来完成验证的,栈的原理是FILO,先进后出,以题中例子为例,当(([进入栈后]进入栈,找到与之对应的左括号,然后[出栈,后面括号依次出栈,当有右括号无法找到左括号与之对应或者栈中还有多余的左括号时表明括号字符串不匹配。
5、局部变量和全局变量能否重命名
首先局部变量的作用域,生命周期是在函数内,而全局变量作用域和生命周期都是在程序运行开始到结束;其次局部变量如果被static修饰,则延长了其生命周期,且其初始化只能初始化一次,而全局变量static修饰表示其不能被外部文件调用,全局变量不能被auto修饰。