Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14708
  • 博文数量: 8
  • 博客积分: 1460
  • 博客等级: 上尉
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-25 16:20
文章分类
文章存档

2010年(6)

2009年(2)

我的朋友
最近访客

分类: C/C++

2009-12-13 11:48:58

今天去笔霸,hr没怎么卡,等了一会就让入座了,还是有好几个面熟的研究生,刚开始找工作的时候见过的,竟有一种亲切的感觉,呵呵.题不多,多是基础的c,数据结构算法等,有几道题不太熟,特此记下,

一,sscanf(),中的正则表达式的使用:  
    sscanf() - 从一个字符串中读进与指定格式相符的数据.   
    函数原型:   
        Int sscanf( string str, string fmt, mixed var1, mixed var2 ... );   
        int scanf( const char *format [,argument]... );   
    说明:
        sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。   
        其中的format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}   
    注:   
        1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)   
        2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。   
        3、width表示读取宽度。   
        4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。   
        5、type :这就很多了,就是%s,%d之类。   
        6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值   
    支持集合操作:   
        %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)   
        %[aB'] 匹配a、B、'中一员,贪婪性   
        %[^a] 匹配非a的任意字符,贪婪性
    例子:   
        1. 常见用法。   
        char buf[512] = ;   
        sscanf("123456 ", "%s", buf);   
        printf("%s\n", buf);   
        结果为:123456   
        2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。   
        sscanf("123456 ", "%4s", buf);   
        printf("%s\n", buf);   结果为:1234   
        3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。   
        sscanf("123456 abcdedf", "%[^ ]", buf);   
        printf("%s\n", buf);   
        结果为:123456   
        4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
      sscanf("123456abcdedfBCDEF", "%[1-9a-z]", buf);   
        printf("%s\n", buf);   
        结果为:123456abcdedf   
        5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。
       sscanf("123456abcdedfBCDEF", "%[^A-Z]", buf);   
        printf("%s\n", buf);   
        结果为:123456abcdedf   
        6、给定一个字符串iios/12DDWDFF@122,获取 / 和 @ 之间的字符串,先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中   
        sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);   
        printf("%s\n", buf);   
        结果为:12DDWDFF   
        7、给定一个字符串““hello, world”,仅保留world。(注意:“,”之后有一空格)
      sscanf(“hello, world”, "%*s%s", buf);   
        printf("%s\n", buf);   
        结果为:world   
        %*s表示第一个匹配到的%s被过滤掉,即hello被过滤了   
        如果没有空格则结果为NULL。   
        sscanf的功能很类似于正则表达式, 但却没有正则表达式强大,所以如果对于比较复杂的字符串处理,建议使用正则表达式.
   



二,strncpy时,如里原串的目的串相同.
    char buf[512] = {0};
    sscanf("12345", "%s", buf);
    strncpy(buf,buf,4);
    printf("%s\n",buf);
  这首题我考虑多了,其实strncpy()不会自动检查原串和目的串是否相同,
  所以结果应该是:12345

三,已知两个循环链表表头pHeadA,pHeadB,让你删除两链表中相同data的结点.


四,xml的三种解释.

五,数据库的事务死锁问题.

     死锁是一个很重要的话题。在事务和锁的使用过程中,死锁是一个不可避免的现象。在两种情况下,可以发生死锁。第一种情况是,当两个事务分别锁定了两 个单独的对象,这时每一个事务都要求在另外一个事务锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁。这 种死锁是最典型的死锁形式。在同一时间内有两个事务A和B,事务A有两个操作:锁定表part和请求访问表supplier;事务B也有两个操作:锁定表 supplier和请求访问表part。结果,事务A和事务B之间发生了死锁死锁的第二种情况是,当在一个数据库中时,有若干个长时间运行的事务执行并行 的操作,当查询分析器处理一种非常复杂的查询例如连接查询时,那么由于不能控制处理的顺序,有可能发生死锁现象。

  当发生死锁现象时,系 统可以自动检测到,然后通过自动取消其中一个事务来结束死锁。在发生死锁的两个事务中,根据事务处理时间的长短作为规则来确定他们的优先级。处理时间长的 事务具有较高的优先级,处理时间较短的事务具有较低的优先级。在发生冲突时,保留优先级高的事务,取消优先级低的事务。


如何避免死锁
1 使用事务时,尽量缩短事务的逻辑处理过程,及早提交或回滚事务;
2 设置死锁超时参数为合理范围,如:3分钟-10分种;超过时间,自动放弃本次操作,避免进程悬挂;
3 优化程序,检查并避免死锁现象出现;
4 .对所有的脚本和SP都要仔细测试,在正式版本之前。
5 所有的SP都要有错误处理(通过@error)
6 一般不要修改SQL SERVER事务的默认级别。不推荐强行加锁




面试:没怎么准备,结果一踏糊涂.
让写一段代码,计算1000的阶乘有多少位.
没印象了,在网上找到了解决办法.

lg(100!)   =   lg(100)   +   lg(99)   +   ……   +   lg(2)   +   lg(1)  
  这个试子可以计算出lg(100!)的值。  
   
  存在一个整数N,使:  
  10^N   <=   100!   <=   10^(N   +   1)  
  (这里的10^N代表10的N次方)  
  可知N就是100!的位数。  
   
  设100!   =   10^x,则:N   <=   x   <=   N   +   1  
  于是,把100!   =   10^x两边取对数得:  
  lg(100!)   =   lg(10^x),可得:  
  x   =   lg(100!)   /   lg10,可得:  
  N   =   floor(x),(N就是x的整数部分)  
   
  我上面说的方法至少在1000!以内是正确的,  
  这点我可以保证。  
   
  曾有人和我说过一个非简单的方法,我一时想不起来,  
  想起来再告诉你。

http://www.slyar.com/blog/high-precision-factorial.html

Stirling's   Series 斯特灵公式:
%E6%96%AF%E7%89%B9%E9%9D%88%E5%85%AC%E5%BC%8F
http://apprentice.blogbus.com/logs/45566290.html

阅读(833) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:放在函数后面的const是什么意思?

给主人留下些什么吧!~~