一、linux和os:
1、命令:netstat tcpdump ipcs ipcrm 这四个命令的熟练掌握程度基本上能体现实际开发和调试程序的经验
2、cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握
3、awk sed需掌握
4、共享内存的使用实现原理、然后共享内存段被映射进进程空间之后,存在于进程空间的什么位置?共享内存段最大限制是多少?
5、c++进程内存空间分布(注意各部分的内存地址谁高谁低,注意栈从高道低分配,堆从低到高分配)
6、ELF是什么?其大小与程序中全局变量的是否初始化有什么关系(注意.bss段)
7、使用过哪些进程间通讯机制,并详细说明
8、makefile编写,虽然比较基础,但是会被问到
9、gdb调试相关的经验,会被问到
10、如何定位内存泄露?
11、动态链接和静态链接的区别
12、32位系统一个进程最多多少堆内存
13、多线程和多进程的区别(重点 必须从cpu调度,上下文切换,数据共享,多核cup利用率,资源占用,等等各方面回答,然后有一个问题必须会被问到:哪些东西是一个线程私有的?答案中必须包含寄存器,否则悲催)
14、写一个c程序辨别系统是64位 or 32位
15、写一个c程序辨别系统是大端or小端字节序
16、信号:列出常见的信号,信号怎么处理?
17、i++是否原子 *** 作?并解释为什么???????
18、说出你所知道的各类linux系统的各类同步机制(重点),什么是死锁?如何避免死锁(每个技术面试官必问)
19、列举说明linux系统的各类异步机制
20、exit() _exit()的区别?
21、如何实现守护进程?
22、linux的内存管理机制是什么?
23、linux的任务调度机制是什么?
24、标准库函数和系统调用的区别?
25、补充一个坑爹坑爹坑爹坑爹的问题:系统如何将一个信号通知到进程?
二、c语言:
1、宏定义和展开(必须精通)
2、位 *** 作(必须精通)
3、指针 *** 作和计算(必须精通)
4、内存分配(必须精通)
5、各类库函数必须非常熟练的实现
6、哪些库函数属于高危函数,为什么?(strcpy等等)
三、c++:
1、一个String类的完整实现必须很快速写出来(注意:赋值构造,operator=是关键)
2、虚函数的作用和实现原理(必问必考,实现原理必须很熟)
3、sizeof一个类求大小(注意成员变量,函数,虚函数,继承等等对大小的影响)
4、指针和引用的区别(一般都会问到)
5、多重类构造和析构的顺序
6、stl各容器的实现原理(必考)
7、extern c 是干啥的,(必须将编译器的函数名修饰的机制解答的很透彻)
8、volatile是干啥用的,(必须将cpu的寄存器缓存机制回答的很透彻)
9、static const等等的用法,(能说出越多越好)
四、数据结构或者算法:
1、《离散数学》范围内的一切问题皆由可能被深入问到(这个最坑爹,最重要,最体现功底,最能加分,特别是各类树结构的实现和应用)
2、各类排序:大根堆的实现,快排(如何避免最糟糕的状态?),bitmap的运用等等
3、hash, 任何一个技术面试官必问(例如为什么一般hashtable的桶数会取一个素数?如何有效避免hash结果值的碰撞)
五、网络编程:
1、tcp与udp的区别(必问)
2、udp调用connect有什么作用?
3、tcp连接中时序图,状态图,必须非常非常熟练
4、socket服务端的实现,select和epoll的区别(必问)
5、epoll哪些触发模式,有啥区别?(必须非常详尽的解释水平触发和边缘触发的区别,以及边缘触发在编程中要做哪些更多的确认)
6、大规模连接上来,并发模型怎么设计
7、tcp结束连接怎么握手,time_wait状态是什么,为什么会有time_wait状态?哪一方会有time_wait状态,如何避免time_wait状态占用资源(必须回答的详细)
8、tcp头多少字节?哪些字段?(必问)
9、什么是滑动窗口(必问)
10、connect会阻塞,怎么解决?(必考必问,提示:设置非阻塞,返回之后用select检测状态)
11、如果select返回可读,结果只读到0字节,什么情况?
12、keepalive 是什么东东?如何使用?
13、列举你所知道的tcp选项,并说明其作用。
14、socket什么情况下可读?
六、db:
1、mysql,会考sql语言,服务器数据库大规模数据怎么设计,db各种性能指标
nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的 *** 作系统类型。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。Nmap最初是用于unix系统的命令行应用程序。在2000年的时候,这个应用程序有了windows版本,可以直接安装使用。Nmap命令的格式为:
Nmap [ 扫描类型 ... ] [ 通用选项 ] { 扫描目标说明 }
下面对Nmap命令的参数按分类进行说明:
1. 扫描类型
-sTTCP connect()扫描,这是最基本的TCP扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sSTCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF,-sX,-sN秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。
-sPping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用此选项。
-sAACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW滑动窗口扫描,非常类似于ACK的扫描。
-sRRPC扫描,和其它不同的端口扫描方法结合使用。
-bFTP反d攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。
2. 通用选项
-P0在扫描之前,不ping主机。
-PT扫描之前,使用TCP ping确定哪些主机正在运行。
-PS对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。
-PI设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-PB这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是 *** 作系统类型。
-I打开nmap的反向标志扫描功能。
-f使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。
-v冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP> 在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况使用这个选项给出你的IP地址。
-g port设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。
-oN把扫描结果重定向到一个可读的文件logfilename中。
-oS扫描结果输出到标准输出。
--host_timeout设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
--max_rtt_timeout设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。
--min_rtt_timeout设置nmap对每次探测至少等待你指定的时间,以毫秒为单位。
-M count置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。
3. 扫描目标
目标地址可以为IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24
-iL filename从filename文件中读取扫描的目标。
-iR让nmap自己随机挑选主机进行扫描。
-p端口 这个选项让你选择要进行扫描的端口号的范围。如:-p 20-30,139,60000。
-exclude排除指定主机。
-excludefile排除指定文件中的主机。
举例:
nmap -v www.hao123.com nmap -sS -O 192.168.1.23/24
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
nmap -v --randomize_hosts -p 80 *.*.2.3-5
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)