牛客网刷面试题遇到的一些问题的总结

1.集线器共享宽带和交换机独占宽带。带宽100M100Mb=12.5MB

2.禁用 nagle实质就是不在延迟 TCP_NODELAY

3.如果一个超关键字去掉其中任何一个字段后不再能唯一地确定记录,则称它为“候选关键字”(Candidate Key)。候选关键字既能唯一地确定记录,它包含的字段又是最精炼的。也就是说候选关键字是最简单的超关键字。例子:已知关系RF,G,H,I,J)及其上的函数相关性集合,F=(F->G,J->F,HJ->I),该关系的候选关键字是:HJ

4.牛客网刷面试题遇到的一些问题的总结_第1张图片

5.TreeMap是一个红黑树的实现,能保证插入的值保证排序。

6.selectepoll机制都是多路I/O机制的解决方案,selectPOSIX标准中的,而epollLinux所特有的。

a) epoll的最大好处是不会随着FD的数目增长而降低效率,在selec中采用轮询处理,其中的数据结构类似一个数组的数据结构,而epoll是维护一个队列,直接看队列是不是空就可以了。nginx就是使用epoll来实现I/O复用支持高并发。

b) epoll:

i. IO的效率不会随着监视fd的数量的增长而下降。epoll不同于selectpoll轮询的方式,而是通过每个fd定义的回调函数来实现的。只有就绪的fd才会执行回调函数;

ii. 支持电平触发和边沿触发(只告诉进程哪些文件描述符刚刚变为就绪状态,它只说一遍,如果我们没有采取行动,那么它将不会再次告知,这种方式称为边缘触发)两种方式,理论上边缘触发的性能要更高一些,但是代码实现相当复杂。

iii. 有着良好的就绪事件通知机制

c) select:

i. 单个进程可监视的fd数量受到了限制,在32位机器上,他所能管理的fd数量最大为1024;

ii. 对socket进行扫描时是线性扫描,当socket文件描述符数量变多时,大量的时间是被白白浪费掉的。

7.newdelete搭配,mallocfree搭配。

8.下面哪些特性会导致代码体积膨胀:宏定义、模板、内联函数。

9.牛客网刷面试题遇到的一些问题的总结_第2张图片

10.for (i = 0; i < 2; i++) { fork(); printf("-"); }输出8个“-”,for (i = 0; i < 2; i++) { fork(); printf("-\n"); }(就是6个“-”了),因为程序遇到“\n”,或是EOF,或是缓中区满,或是文件描述符关闭,或是主动flush,或是程序退出,就会把数据刷出缓冲区。 

11.Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。

a) 加载:容器通过类加载器使用servlet类对应的文件加载servlet

b) 创建:通过调用servlet构造函数创建一个servlet对象

c) 初始化:调用init方法初始化

d) 处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求

e) 卸载:调用destroy方法让servlet自己释放其占用的资源

12.JVM中一个字节以下的整型数据会在JVM启动的时候加载进内存,除非用new Integer()显式的创建对象,否则都是同一个对象.

a) Integer i01 = 59;

b) int i02 = 59;

c) Integer i03 =Integer.valueOf(59);

d) Integer i04 = new Integer(59);

e) 只有i04是在堆里面的。其他三个都一样。只要在127-128都在jvm运行时加载到内存。

13.chmodLinux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限。第二个数字表示与文件所有者同属一个用户组的其他用户的权限。第三个数字表示其它用户组的权限权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。例:chmod 755

14.在linux系统中一个文件夹里面有若干文件,可以获取这个文件夹的大小的命令是:du -sh

15.在Linux中列出当前目录及子目录中后缀为.txt的文件:find . -name “*.txt”

16.ulimit  -s size:设置 堆栈 的最大值.单位:kbytes

17.tar是操作.tar的命令。gzip是压缩.gz压缩包的命令。compress:压缩.Z文件。uncompress:解压缩.Z文件。

18.tar zcvf /home/wang.tar.gz /home/stud1/wang 解释:命令格式为 先压缩后跟压缩的目录

19.$$、$@、$#以及$*的含义分别如下:

a) $#:参数个数

b) $$:当前shellPID进程ID

c) $@$*均表示所有参数,形式有所不同。$@"$1" "$2" … "$n"; $*: "$1 $2 … $n"

d) $!Shell最后运行的后台ProcessPID

e) $?:最后运行的命令的结束代码(返回值)

20.网络服务的daemon:inetd

21.linux下查看当前网络连接的命令:netstat

22.启动init进程的配置文件是/etc/inittab

23.在当前目录及其子目录所有的.cpp文件中查找字符串"example", 不区分大小写:grep -i -r example ./*.cpp   解释:-i:不区分大小写地搜索。默认情况区分大小写。-r:明确要求搜索子目录。

24.使用crontab命令编辑:分  时  日  月  周  命令。

25.Linux操作系统包括三种不同类型的进程。

a) 交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。

b) 批处理进程——这种进程和终端没有联系,是一个进程序列。

c) 监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。

26.spinlock的临界区尽量简短,Spinlockmutex不同,spinlock不会导致线程的状态切换(用户态->内核态)

27.UNIX系统由内核、shell、文件系统和应用程序等4部分组成。

28.Linux关机命令有halt,init 0,poweroff,shutdown -h 时间,其中shutdown是最安全的.重启命令有reboot, init 6, shutdow -r 时间。

有需要的同学可以下载PDF文档查看,点击下载。
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51396739
作者:WSYW126

你可能感兴趣的:(面试题,牛客网)