前几天的面试题目,求比较完美的解答,该怎么解决

前几天的面试题目,求比较完美的解答
笔试:  
const   char   *   sz   =   "123 ",将SZ转化为整型123  
其他略...  

机试:  
求大正整数的除法。  
例如:A=2412342535421352314213421342355466546678678  
            B=65465756754234523456754675467567  
求:A/B的商和余数  

面试:  
1:求文件的长度有几种方法?各自主要使用的函数。  
2:让程序只运行一个进程有几种方法?各自主要使用的函数。  
3:多线程的建立有几种方法?各自主要使用的函数和注意的问题。  
4:COM所要实现的几个函数,各自的用法?  
5:完成端口,重叠I/O等几种网络模型,请简述各自的基本含义,以及各自主要的函数?  
6:你在程序中主要(经常)用什么设计模式?简述一下

------解决方案--------------------
int num = 0;
for (int i = 0; sz[i] != '\0 '; i++)
{
num *= 10;
num += sz[i] - '0 ';
}
------解决方案--------------------
大数的除法有不少方法,对于大正整数,最简单的办法是先实现加减法和比较,然后象下面这样做:

Int Q = 0, Int R = A;

while ( R > = B)
{
R -= B;
Q += 1;
}

// 此时Q是商,R是余数.
------解决方案--------------------
笔试:
const char * sz = "123 ",将SZ转化为整型123
其他略...
------------------------------------------------------
atoi函数

机试:
求大正整数的除法。
例如:A=2412342535421352314213421342355466546678678
B=65465756754234523456754675467567
求:A/B的商和余数
-----------------------
主要是大整数的加减法和比较,楼上说滴很清楚了。

面试:
1:求文件的长度有几种方法?各自主要使用的函数。
---------------------------
1)定位在文件头和尾,两数相减即为长度。
2)系统API得到文件属性。

2:让程序只运行一个进程有几种方法?各自主要使用的函数。
1)建立命名的核心对象,如果结果是已经存在,说明有进程在运行(可能和其他的程序命名相同的核心对象哈,不过几率很小)
2)共享内存空间设立一个标记(访问要用互斥操作)
3)遍历进程,看是否有同名的。
4)文件里设定标记,独占方式打开。
反正就是设定一个进程可以共享的标记。

3:多线程的建立有几种方法?各自主要使用的函数和注意的问题。
---------------------------------
有几个函数(具体忘记了。。。),据说有个函数有BUG(参考侯捷译《多线程程序设计》)

4:COM所要实现的几个函数,各自的用法?
5:完成端口,重叠I/O等几种网络模型,请简述各自的基本含义,以及各自主要的函数?
6:你在程序中主要(经常)用什么设计模式?简述一下
-------------------------------------------
上面三个不会哇哈哈哈
------解决方案--------------------
1:ftell
2:让程序只运行一个进程有几种方法?各自主要使用的函数。
这个太多了,bt的有Bind端口,创建内存文件映射.独占模式打开文件什么的
3:多线程的建立有几种方法?各自主要使用的函数和注意的问题。
beginthread beginthread createthread
4 AddRef,QueryInterface;Release
5 CreateIoCompletionPort

------解决方案--------------------
TO:Vitin(卫亭)

这种大整数是int型能表示的嘛?double也不行吧,这就是出题用意所在吧。
自己定义个int数组什么的来完成题目。。。。
------解决方案--------------------
大整数是一个类型.例如:

class Int
{
public:
Int(int);
Int(const Int&);
bool operator > = (const Int&);
Int& operator += (int);
Int& operator -= (const Int&);
....
private:
int* v_; // 可以用一个int数组来代表.
size_t size_;
};

比如,一个int元素表示最大1,000,000,000-1(为方便显示起见,其实最大值可以是任意int允许的正值)的值,v_[0]表示最低的9位十进制数,v_[1]表示次低的9位,以此类推,做加法时需要考虑进位,做减法时需要考虑退位.长度不够时重新分配.(可以分配原先长度的2倍,从而分摊花费的时间).当然,这个v_用vector <int> 更好一些,可以不必考虑重新分配内存的问题.
------解决方案--------------------
路过标记.......
------解决方案--------------------
都是是些基础题目。。
------解决方案--------------------