随便记一下j

单例模式怎么做UT呢?

因为只有一个对象 ,测试之间肯定会相互影响的


1.友元的定义与使用

C++ Primer :P396 笔记本: P16

 

2.

今天遇到这个问题,在网上看了一会资料后找到原因,即:

switch 的 case 中不能定义变量,不然就会报错.可能是变量的初始化会因为有时候case条件不被执行而跳过.

后来想到三个解决的方法:

1:用if else 代替 switch 语句;

2:在case中用{}将代码括起来,这样在{}中就能定义变量了;

3:如果变量在各个case中都要用的话,就把变量定义在switch外面吧;
http://www.2cto.com/kf/201112/115456.html

 

3.关于strlen和sizeof

(1)char a[5] = "1,2,3,4,5";

strlen(a) = 11

sizeof(a) = 5

(2)char a[8] = "1,2,3,4,5";

strlen(a) = 5

sizeof(a) = 8

(3)string str = "12345"

sizeof(str) = 16

(4)string str = "123456789123456789";

sizeof(str) = 16

总结:

char a[5]是个数组,数组的初始化 是 如果不够就补0 ,char a[5] = "1,2,3,4,5" 刚好 5个 ,strlen 不知道什么时候会停  ,所以这个打印应该是随机的

对字符数组使用strlen,若数组没有满,strlen=数组中元素的个数

对字符数组使用sizeof,sizeof=数组大小,与数组中元素的个案无关

对string使用strlen,语法错误

对string使用sizeof,sizeof=16,要看string是怎么实现的。

 

4.《鸟哥》要好好看看了,

PHP是什么东西,为什么会放在系统里面?\


5.淘宝2012秋季校园招聘技术试卷(A)里面有一题考硬盘接口,硬件方面的题应该不会太多吧

概率论的题目好多,都忘掉了

正则表达式

网络应用方面一点都不懂

海量数据的题几乎每次都会有一两题,重要


6.类或结构体的内存分配方式

6、下面程序的输出结果为()

  1. unsigned int a=1;  
  2. cout<<a*-2<<endl;  

A、-4      B、4       C、4294967294         D、4294967295

答:C

考查的是unsigned int和int在一起混合运算,int转化为unsigned int
-2的补码就是2^32-2,即是4294967294 ,乘以1的结果还是这个数字。

8、下面程序的输出结果为()

  1. #pragma pack(8)   
  2. union A  
  3. {  
  4.     char a[13];  
  5.     int b;  
  6. };  
  7. int main(void)  
  8. {  
  9.     cout<<sizeof(A)<<endl;  
  10.     return 0;  
  11. }  

A、4      B、8       C、16        D、12

答:C

10、下面程序的输出结果为()

  1. struct Test  
  2. {  
  3.     unsigned short int a:5;  
  4.     unsigned short int b:5;  
  5.     unsigned short int c:6;  
  6. };  
  7. int main(void)  
  8. {  
  9.     Test test;  
  10.     test.a=16;  
  11.     test.b=4;  
  12.     test.c=0;  
  13.     int i=*(short*)&test;  
  14.     printf("%d\n",i);  
  15.     return 0;  
  16. }  

A、6         B、144            C、5            D、95

答:B

1、程序中':'的作用,如 unsigned short int a:5;表示变量a占了5个bit的空间,这样的话结构体所占的变量空间为5+5+6,暂且表示为000000|00000|00000,对应c|b|a
2、在主程序中对结构体初始化a=16,b=4,c=0,转换为二进制放到上面的空间,000000|00100|10000同样对应a|b|c
3、后面一句int i=*(short*)&test;取结构体test的地址空间,就是上面的000000|00100|10000,转换成short型,也就是144


7.网易2012校园招聘笔试题目有几个数据库的题,都忘光了

网络稍微看过一点,理解不够啊


8.ICMP常用命令

宏函数

只有一个点的树的高度是0

字节为6位的二进制有符号整数,其最小值是(-32)。
答:用补码
分布式计算的常用方法-分布式缓存技术
C++高效代码

9.如果X大于0并小于65536,用移位法计算X乘以255的值为()

答:(X<<8)-1,必须有括号,因为移位运算符的优先级没有减号的优先级高

计算机在内存中存储数据时使用了大、小端模式,请分别写出A=0X123456在不同情况下的首字节是,大端模式()           小端模式(),X86结构的计算机使用()模式。

  1. 答:0X12,0X56,小端  
  2. 一般来说,大部分用户的操作系统(如windows, FreeBsd,Linux)是小端模式的。少部分,如MAC OS,是大端模式 的。

经典代码,虽然懂,但是不能很快的写出来。要背


10.腾讯有一题写后缀数组,看来好多经典算法要总结要背后

运算符的优先级,以及优先级相同情况下的结合性

磁盘读取数据的方式

几种设计模式要总结一下

IP地址中特殊地址、专用地址的地址范围

 

11.一个函数输入的参数个数不确定,可以使用类似“命令行参数”的方法实现,如下:

#include <stdio.h>
void proc(char **p);

int main()
{
	char s[124] = {0};
	char *str[10] = {0};
	
	gets(s);
	printf("s: %s \n",s );
	int i;
	int j = 0;
	str[0] = s;
	for(i = 0; s[i] != '\0'; i++)
	{
		if(s[i] == ' ')
		{
			j++;
			s[i] = '\0';
			str[j] = &s[i+1];
		}
	}
	
	proc(str);
	
	return 0;
}

void proc(char **p)
{
	int i = 0;
	while(1)
	{
		if(p[i] != NULL)
		{
			printf("%s \n", p[i]);
		}
		else
		{
			break;
		}
		i++;
	}
}


这个函数要注意的是:

str[j] = &s[i+1];让指针数组的某一项指向数组的某一项,s是在栈里面的,str[j] 指向的是一样栈的空间 ,现在把str传给另一个函数,栈的内容都没有了,proc怎么访问p的内容呢?
答:
栈是先入后出的 先入的肯定 还没有释放掉 ,mian函数调用 proc , proc都没有返回 mian的 栈 不可能被销毁,这个问题 是调用函数 用到了被调用函数的栈 内地址,被调用函数 用调用函数的 栈地址 肯定是安全的

 

 

7.4-1

7.4-6

7-2

7-5

你可能感兴趣的:(c)