程序员面试宝典学习

1.判断数字转换为二进制时“1”的个数




int func(int x){
int count = 0;
while(x!=0){
count++;
x = x&(x-1);
}
return count;
}








2.加法




int add(int a,int b){
if(b==0) return a;
int sum,carry;
sum = a^b;
carry = (a&b)<<1;
return add(sum,carry);
}








3.关于指针




char ss[100]="abcdefg";
char *s = "abcdefg";




s只是指向内存中固定字符串的地址,内容不能改变。
而ss是开辟了新的地址,内容可以改变。








4.单精型 float 占用内存 4 Byte;双精型double占用内存8byte;指针占用内存4byte








5.指针和引用的区别




a.任何情况下不能使用指向空值的引用;
b.指针可以重新指向,但是引用不可以








6.GetMemory(str,100);//不能给str开辟空间,只能给p开辟,而且产生内存泄露,因为p被新开辟空进的内存覆盖而又不能传给str。




void GetMemory(char * p,int num)
{
 p = (char *)malloc(sizeof(char)*num);
}








7.
整型                                        int a;
整型指针        int *a;
指向整型指针的指针    int **a;
整型数组 int a[10];
包含10个指向整形的指针的数组 int *a[10];/int *(a[10]);
指向数组的指针,数组包含10个整型变量 int (*a)[10];
指向函数指针,函数参数整型,返回整形 int (*a)(int);
有十个指针的数组,每个指针指向函数,每个函数形参和返回类型都是整型 int (*a[10])(int);
二级指针,指向一维数组的指针,数据元素是float float (**a)[10];
指针,指向一个一维数组,数组元素是double* double *(*a)[10];
函数指针,指向的函数类型是两个int形参且返回一个函数指针的函数,返回的函数指针指向一个有int参数且返回int的函数int (*(*a)(int,int))(int);




8.虚构函数设为virtual型,因为这样使用基类指针指向派生类时,可以调用派生类指针。




9.对于一个空类也含有4个默认函数:构造函数,析构函数,拷贝构造函数,赋值函数。后面三个称为复制控制函数。




10.假如B共有继承A,A中虚函数fun()输出A,B中虚函数fun()输出B,则
int main(){
A *pa = new A();
pa->fun();                //A
B * pb = (B*)pa;
pb->fun();                //A
delete pa,pb;
pa = new B(); 
pa=->fun();               //B
pb = (B*)pa;
pb->fun();                //B
return 0;
}
多态性发生于指针指向内容改变。




11.小尾 Little Endian,用于PC,高位放在高地址;
   大尾 Big    Endian,用于MAC,高位放在低地址。
   
检测大小尾:
short int A = 0X1122;
char a =((char*)(&A))[0];
char b =((cahr*)(&B))[1];
printf("%d %d\n",a,b);




12.static
a.函数中static作用范围为本函数体,且每次值保持。
b.模块内static全局变量不能被外部访问。
c.类内static变量为该类共有。
d.类内static成员函数属于类共有,不接受this指针,之智能访问类的static变量和普通变量。




13.删除、插入节点注意事项:判断是否为头尾节点。




14.判断链表中央位置节点:一个节点每次前进2个,一个节点每次前进1个,前一个节点到底时,
后一个节点即到中点。




15.栈区:编译器自动分配,释放
   堆区:程序员分配,释放
   
16.前序遍历:根左右;中序遍历:左根右;后序遍历:左右根。




17.霍夫曼编码:随频率上升,所需比特数下降,0,10,110,111。
               频率最小的两个待编码码元概率先合并,再循环。




18.约瑟夫问题
#include<iostream>
#include<stdlib.h>
#include<stdio.h>




typedef struct LNode{
int data;
struct LNode * Link;
}LNode,*LinkList;




void Josephus(int n,int k,int m)
//n: total number;k:first number,m:period
{
LinkList p,r,List,curr;
p = (LinkList)malloc(sizeof(LNode));
p->data = 0;
p->Link = p;
curr = p;




for(int i =1;i<n;i++)
{
LinkList t = (LinkList)malloc(sizeof(LNode));
t->data = i;
t->Link = curr->Link;
curr->Link = t;
curr = t;
}
r = curr;
while(k--) r=p,p=p->Link;
while(n--)
{
for(int s=m-1;s--;r=p,p=p->Link);
r->Link=p->Link;
printf("%d->",p->data);
free(p);
p = r->Link;
}
}
void main(){
Josephus(13,4,2);
while(true);
}




19.
A除以B 上取整=(A+B-1)/B (C语言)
A除以B 下取整=A/B       (C语言)




20.
观察者模式
一种一对多的模式,多个观察者同时监听一个主题,这个主题在发生状态变化时会通知所有观察者,使之更新。




21.白盒测试方法
覆盖所有分支。




22.死锁
互斥条件(无法破坏)  资源不能被共享,只能由一个进程使用。
请求与保持条件        已经得到资源的进程可以再次申请新的资源。
不可剥夺条件          已经分配的资源不能从相应的进程中被强制地剥夺。
循环等待条件          系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。




23.进程状态
就绪:除未获取CPU之外获得所有资源
执行
阻塞








24.找出表PPP中最小的数




select * from PPP where num<= all (select num from PPP)




25.PPP中重复的记录




select * from PPP where num in (select num from PPP group by num having (count(num)>1))




26.OSI七层
物理层-》数据链路层-》网络层-》传输层-》会话层-》表示层-》应用层




27.网址=网络号+主机地址
主机地址全零:网络地址,不可用于分配主机
主机地址全一:广播地址,不可用于分配主机




28.防火墙《--》门卫
   入侵检测《--》监控
   
29.常用TCP端口
FTP:21;
Telnet:23;
SMTP:25
HTTP:80;
常用UDP端口
DNS:53;
SNMP:161   简单网络管理协议


29.不能重载运算符
成员运算符.
三目运算符?:
取大小运算符sizeof()
域运算符::
对指针成员取内容运算符.*


30.网络协议
应用层
DHCP/DNS/FTP/Gopher(文件查询)/HTTTP/IMAP4(叫偶胡适数据访问协议)/IRC(中继聊天)/NNTP(网络新闻传输协议)/XMPP(可扩展通讯和表示协议)/POP3/SIP(类似于HTTP的文本协议)/SMTP/SNMP/SSH(安全协议)/TELNET/RPC(远程过程调用)/RTCP(实时传输控制协议)/RTP(实时传输协议)/RTSP(即时串流协定)/SDP(会议描述协议)/SOAP(简单对象访问协议)/STUN(NAT会话传输应用程序)/NTP(网络时间协议)/SSPP(简单服务发现协议)/GTP(通用数据传输平台)
传输层
TCP/UDP/TLS(传输层安全协议)/DCCP(数据拥塞控制协议)/SCTP(串流控制传输协议)/RSVP(资源预留协议)/PPTP(点对点隧道协议)


网络层
IPv4/IPv6/ICMP(包括ping)/IGMP( 因特网组管理协议)/IS-IS(中间系统到中间系统)/IPsec/BGP/OSPF/RIP/ARP(IP->MAC)/RARP(MAC->IP)


数据链路层
Wi-Fi(802.11)/WiMAX(802.16)/ATM/DTM/令牌环/以太网/FDDI(分布式数据接口)/帧中继/GPRS/EVDO/HSPA/HDLC(高级数据链路控制)/PPP(点对点协议)/L2TP(第二层隧道协议)/ISDN(综合业务数字网,电路交换网)/STP(生成树协议)


物理层
以太网/调制解调器/电力线通信/SDH/光导纤维/同轴电缆/双绞线


30.IPv4 Vs IPv6
IPv4 1.best-effort 2.地址枯竭 3.32位
IPv6 128位
转换机制
a 运行与主机和路由器之间的双堆栈IP实现
b 将IPv4潜入IPv6地址
c IPv6立于IPv4之上的隧道机制
d IPv4/IPv6报头转换




31.路由协议
A。RIP路由信息协议
每30秒广播一次路由表,根据收到路由表计算自己的路由表。
B。OSPF开放最短路径优先
划分区域,每个区域中所有路由器维护一个相同的链路状态数据库,区域分为骨干、非骨干、非骨干区域必须和骨干区域相连。
C。IS-IS中间系统到中间系统
类似于OSPF,但是收敛快。
D。IGRP内部网关路由协议
类似于RIP,引入混合度量值和带宽延时等。
E。EIGRP
引入非等价负载均衡技术,收敛快,在Cisco设备网络中广泛部署。
F。BGP边界网关协议
标准化组织制定的ISP间路由协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值