精华内容
下载资源
问答
  • java面试笔试题目.ppt

    2020-04-12 08:00:56
    Java面试笔试题目 1.列举出 10个JAVA语言的优势 a:免费开源跨平台(平台独立性)简单易用功能完善面向对象健壮性多线程结构中立企业应用的成熟平台, 无线应用 2.列举出JAVA中10个面向对象编程的术语 a:包类接口对象...
  • PHP宝典面试笔试题目

    2018-12-05 20:02:00
    PHP宝典面试笔试题目 来自《PHP程序员面试笔试宝典》,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书。 PHP题目 【真题68】 ( )操作符在两个操作数中有一个(不是...

    PHP宝典面试笔试题目

    来自《PHP程序员面试笔试宝典》,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书。

     

    PHP题目

    真题68】 (    )操作符在两个操作数中有一个(不是全部)为 True 时返回 True

    参考答案:逻辑异或(xor)运算符。

     

    【真题61行如下程序段:

    <?php

        echo 24%(-5);

    ?>

     

    程序的输出结果是(    

    A5 B4 C-4 D19

    参考答案:B

    分析:在PHP中,取模运算符%的操作数在运算之前都会转换成整数(除去小数部分)。其运算结果和被除数的符号(正负号)相同。即$a%$b的结果和$a的符号相同。本题中,24%(-5)的符号为正,结果为4。所以,选项B正确。

     

    【真题181写一个函数,算出两个文件的相对路径。例如,$a = \/a/b/c/d/e.php\;$b =  \/a/b/12/ 34/c.php\;,计算出 $b 相对于 $a 的相对路径应该是 ../../c/d

    参考答案:示例代码如下:

    function getRelativepath($a, $b) {

    $returnpath = array(dirname($b));

    $arrA = explode(' \/\ ', $a);

    $arrB = explode(' \/\ ', $returnpath[0]);

    for ($n = 1, $len = count($arrB); $n < $len; $n++) {

    if ($arrA[$n] != $arrB[$n]) {

    break;

    }

    }

    if ($len - $n > 0) {

    $returnpath = array_merge($returnpath, array_fill(1, $len - $n, "\..\ "));

    }

    $returnpath = array_merge($returnpath, array_slice($arrA, $n));

    return implode(' \/\ ', $returnpath);

    }

    $a = "\/a/b/c/d/e.php\";

     

    $b = "\/a/b/12/34/c.php\";

    echo getRelativepath($a, $b);

     

     

    【真题182以下关于PHP文件处理的说法中,正确的是    )。

    Afilegetcontents()函数能用来抓取网页数据,但是没办法设置超时时间

    Bfile()函数既能读取文本文件也能读取二进制文件,但是读取二进制文件有可能出现安全问题

    C.如果表单中没有选择上传的文件,则 PHP 变量的值将为NULL

    Dfsockopen()fputs()结合起来可以发送邮件,也可以用来抓取网页内容下载ftp文件等

    参考答案:C

    分析:对于选项A,可以通过context参数设置超时时间。所以,选项A错误。

    对于选项Bfile()函数是可以安全用于读取二进制文件的。所以,选项B错误。

    对于选项C,表单中没有文件上传时,PHP$_FILES变量值为NULL。所以,选项C正确。

    对于选项Dfputs()用于写入字符串到文件中,只能用于上传不能用于下载ftp文件。所以,选项D错误。

     

    【真题215按要求写出SQL实现

    1创建新闻发布系统,表名为message,有如下字段

    id 文章id

    title 文章标题

    content 文章内容

    category_id 文章分类id

    hits 点击量

     

    参考答案:

    CREATE TABLE 'message'(

    'id' int(10) NOT NULL auto_increment,

    'title' varchar(200) default NULL,

    'content' text,

    'category_id' int(10) NOT NULL,

    'hits' int(20),

    PRIMARY KEY('id');

    )ENGINE=InnoDB DEFAULT CHARSET=utf8;

     

    2同样上述新闻发布系统:表comment记录用户回复内容,字段如下:

    comment_id 回复id

    id 文章id,关联message表中的id

    comment_content 回复内容

     

    现通过查询数据库需要得到以下格式的文章标题列表并按照回复数量排序,回复最高的排在最前面

    文章id 文章 标题 点击量 回复 数量

     

    用一个SQL语句完成上述查询,如果文章没有回复,则回复数量显示为0

    参考答案:

    SELECT message.id id,message.title title,IF(message.'hits' IS NULL,0,message. 'hits') hits,

    IF(comment. 'id' is NULL,0,count(*)) number FROM message LEFT JOIN

    comment ON message.id=comment.id GROUP BY message. 'id';

     

    上述内容管理系统,表category保存分类信息,字段如下:

    category_id int(4) not null auto_increment;

    category_name varchar(40) not null;

     

    3用户输入文章时,通过选择下拉菜单选定文章分类,写出如何实现这个下拉菜单

    参考答案:

    function categoryList()

    {

            $result=mysql_query("select category_id,categroy_name from category")

                or die("Invalid query: " . mysql_error());

     

            print("<select name='category' value=''>/n");

            while($rowArray=mysql_fetch_array($result))

            {

           print("<optionvalue='".$rowArray['category_id']."'>".$rowArray['categroy_name']."</ option>/n");

            }

            print("</select>");

    }

     

     

    【真题216使用PHP写一段简单查询,查出所有姓名为张三的内容并打印出来。

    表名User

    Name    Tel      Content      Date

    张三 13333663366 大专毕业 2006-10-11

    张三 13612312331 本科毕业 2006-10-15

    张四 021-55665566 中专毕业 2006-10-15

     

    参考答案:根据上面的题目完成代码:

    $mysql_db=mysql_connect("local","root","pass");

    @mysql_select_db("DB",$mysql_db);

     $result = mysql_query("SELECT * FROM 'user' WHERE name='张三'");

     while($rs = mysql_fetch_array($result)){

         echo $rs["tel"].$rs["content"].$rs["date"];

      }

     

     

    【真题217考虑如下SQL语句哪个选项能对返回记录的条数进行限制?(    )(双选)

    SELECT * FROM MY_TABLE

     

    A.如果可能,那么把查询转换成存储例程

    B.如果程序允许,那么给查询指定返回记录的范围

    C.如果可能,那么添加 where 条件

    D.如果DBMS允许,那么把查询转换成视图

    参考答案:B、C

    分析:有两个方法能限制返回记录的条数——使用 where 条件或limit关键字指定查询返回的记录的范围。

    通常情况下,如果没有特殊需要,那么尽量不要用 select *,这会浪费大量的数据缓存。

     

    【真题218执行以下 SQL 语句后将发生    )。

    BEGIN TRANSACTION

    DELETE FROM MYTABLE WHERE ID=1

    DELETE FROM OTHERTABLE

    ROLLBACK TRANSACTION

     

    AOTHERTABLE 中的内容将被删除

    BOTHERTABLE MYTABLE 中的内容都会被删除

    COTHERTABLE 中的内容将被删除,MYTABLE ID 1 的内容将被删除

    D.数据库没有变化

    参考答案:D

    分析:这个查询是一个事务,并且这个事务的最后有回滚,数据库不会有变化。

     

     

    Mysql题目

    一、如何进行数据库优化?

    数据库优化的过程可以使用以下的方法进行:

    1)选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT NULL,例如'省份性别',最好设置为ENUM

    2)使用连接(JOIN)来代替子查询

    ① 删除没有任何订单客户:DELETE FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)。

    提取所有没有订单客户:SELECT FROM customerinfo WHERE customerid NOT in(SELECT customerid FROM orderinfo)。

    提高b的速度优化:SELECT FROM customerinfo LEFT JOIN orderid customerinfo. customerid=orderinfo.customerid WHERE orderinfo.customerid IS NULL。

    3)使用联合(UNION)来代替手动创建的临时表创建临时表:SELECT name FROM 'nametest' UNION SELECT username FROM 'nametest2'

    4)事务处理保证数据完整性,例如添加和修改。同时,如果两者成立则都执行,一者失败都失败:

    mysql_query("BEGIN");

    mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";

    mysql_query("SELECT * FROM 'orderinfo' where customerid=".$id");

    mysql_query("COMMIT");

     

    5)锁定表优化事务处理用一个SELECT语句取出初始数据,通过一些计算,用UPDATE语句将新值更新到表中。包含有WRITE关键字的LOCK TABLE语句可以保证在UNLOCK TABLES命令被执行之前,不会有其他的访问来对customerinfo表进行插入、更新或者删除的操作。

    mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");

    mysql_query("SELECT customerid FROM 'customerinfo' where id=".$id);

    mysql_query("UPDATE 'orderinfo' SET ordertitle='$title' where customerid=".$id);

    mysql_query("UNLOCK TABLES");

     

    6)使用外键,优化锁定表customerinfo里的customerid映射到orderinfo里的customerid任何一条没有合法的customerid的记录不会写到orderinfo

     CREATE TABLE customerinfo

       (

         customerid INT NOT NULL,

         PRIMARY KEY(customerid)  

       )TYPE = INNODB;

       CREATE TABLE orderinfo

       (

         orderid INT NOT NULL,

         customerid INT NOT NULL,

         PRIMARY KEY(customerid,orderid),

         FOREIGN KEY (customerid) REFERENCES customerinfo

         (customerid) ON DELETE CASCADE   

       )TYPE = INNODB;

     

    注意:'ON DELETE CASCADE',该参数保证当customerinfo表中的一条记录删除的话同时也会删除order

    表中的该用户的所有记录注意使用外键时要定义数据库引擎为INNODB。

     

    二、选择正确的存储引擎?

    MySQL中有两个存储引擎:MyISAMInnoDB,每个引擎都有利有弊。

    MyISAM适合于一些需要大量查询的应用,但其对于有大量写操作的支持并不是很好。甚至只是需要update一个字段,整个表都会被锁起来,而其他进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。

    InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。但是它支持行锁,于是在写操作比较多的时候,会更优秀。并且,它还支持更多的高级应用,例如事务。

     

    三、【真题231】 用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?

    参考答案:检查PHP脚本的执行效率的方法如下:可以在检查的代码开头记录一个时间,然后在代码的结尾也记录一个时间,结尾时间减去开头时间取这个时间的差值,从而检查PHP的脚本执行效率,记录时间可以使用microtime()函数。

    检查数据库SQL的效率的方法如下:可以通过explain显示MySQL如何使用索引来处理select语句及连接表,帮助选择更好的索引和写出更优化的查询语句。然后启用slow query log记录慢查询,通过查看SQL的执行时间和效率来定位分析脚本执行的问题和瓶颈所在。

     

    四、 以下代码的运行结果为(    )。

    <?php

        mysql_connect('localhost','root',"");

        $result = mysql_query("SELECT id,name FROM tb1");

        while($row = mysql_fetch_array($result,MySQL_ASSOC)){

            echo' ID:' .$row[0].' Name:' .$row[];

        }

    ?>

     

    A.报错    B.循环换行打印全部记录      

    C.无任何结果 D.只打印第一条记录

    参考答案:A

    分析:因为代码中没有指明要操作的数据库名,所以会报错。

    所以,本题的答案为A

     

     

    【真题222以下说法正确的是    )。

    A.使用索引能加快插入数据的速度

    B.良好的索引策略有助于防止跨站攻击

    C.应当根据数据库的实际应用理设计索引

    D.删除一条记录将导致整个表的索引被破坏

    参考答案:C

    分析:索引的作用主要是帮助数据库快速查找到对应的数据,并不能加快插入数据的速度,所以,选项A错误。

    索引不能够帮助防止跨站攻击,所以,选项B错误。

    创建合理的索引需要分析数据库的实际用途并找出它的弱点。优化脚本中的冗余查询同样也能提高数据库效率。索引是占用物理空间的,所以在实际的应用中是要合理设计使用索引的。所以,选项C正确。

    索引是一种表结构,删除一条数据也不会影响到整个表的索引,并且索引不一定是数字,也可以是字符串。所以,选项D错误。

     

    【真题223下列关于全文检索技术的说法中,不正确的是    )。

    ASphinx是一个基于SQL的全文检索引擎,可以结合MySQL做全文搜索,它可以提供比数据库本身更专业的搜索功能

    BSolr是新一代的全文检索组件,它比Lucene的搜索效率高很多,还能支持HTTP的访问方式,PHP调用Solr也很方便

    CMySQL中把一个字段建立FULLTEXT索引,就可以实现全文检索,目前MyISAMInnoDBtable都支持FULLTEXT索引

    DLucene附带的二元分词分析器CJKAnalyzer切词速度很快,能满足一般的全文检索需要

    参考答案:B

    分析:Sphinx是一个基于SQL的全文检索引擎,可以结合MySQLPostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    Solr是一个独立的企业级搜索应用服务器,用户可以通过HTTP请求访问,它是采用JAVA5开发,基于Lucene的全文搜索服务器,同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。并且SolrLucene的搜索效率高很多,但是PHP调用Solr并不方便,选项B的说法错误。

    MySQL中的MyISAMInnoDB都是支持FULLTEXT全文索引的。全文搜索引擎可以在不使用模板匹配操作的情况下查找单词或短语。

     

    购买链接:京东购买

     

    题目来自《PHP程序员面试笔试宝典》,里面涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书。

     

    更多PHP面试笔试真题可以浏览:www.shuaiqi100.com  

     

    更多有趣有料的PHP面试笔试资料可以关注:“琉忆编程库”

    或者浏览:www.shuaiqi100.com 获取。

    PHP程序员面试笔试宝典下载:https://pan.baidu.com/s/1-ES2ZI3z5Lhv-zTKFmJDSQ

    转载于:https://www.cnblogs.com/leoyi330/p/10073044.html

    展开全文
  • 程序员面试笔试宝典学习记录(一)(常见面试笔试题目) 摘选著名的互联网企业的面试笔试真题: 1.extern的作用 自己理解:应该需要区分extern在C语言中和C++语言中的作用,C语言中extern声明的...

      转自:http://www.cnblogs.com/weixliu/p/3903390.html


    程序员面试笔试宝典学习记录(一)(常见面试笔试题目)

    摘选著名的互联网企业的面试笔试真题:

    1.extern的作用

    自己理解:应该需要区分extern在C语言中和C++语言中的作用,C语言中extern声明的函数和变量可以被该文件外部模块引用,C++语言中除了该作用还可以声明extern “C”声明一段代码编译连接的方法为C语言的方法。

    参考:其实extern的百度词条解释的很清楚,具体的也是跟我上面自己理解差别不是很大。

    (a) extern是C/C++语言中声明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量在本模块或其他模块中使用(通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。)

    (b) 被extern “C”修饰的变量和函数是按照C语言的方式编译和链接的。(C语言不支持函数重载,所以函数的C++和C的编译方式不同,这一句的作用就是实现C++和C及其他语言混合编程)

    2.strstr()函数的作用

    strstr()函数的原型一般为extern char * strstr(const char *src , const char *dest) , 其作用就是寻找目标字符串在源字符串中第一次出现的位置。

    3.windows线程优先级问题( 进程和线程的区别和联系 )

    我觉得这个概念可能面试、笔试的时候不是很适合,毕竟平台相关,大多数公司可能更多的倾向于linux开发,这个问题更换为进程和线程的区别更好,这个是笔试,面试常见的知识考查。

    (a) 通常一个进程可以包含若干个线程,它们可以利用进程所拥有的资源。进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本不拥有系统资源,只拥有一些在运行中必不可少的资源(如程序计数器,一组寄存器和栈),线程可与同属于一个进程的其他线程共享进程所拥有的全部资源。

    线程和进程区别归纳:

    •     地址空间和其他资源:进程间互相独立,同一个进程的各线程共享。
    •     通信:进程间通信IPC,线程间可以直接读写进程序数据段(如全局变量)来进行通信-需要进行同步和互斥的辅助。
    •     调度和切换:线程上下文切换比进程上下文切换快速,高效。
    •     多线程的OS中,进程不是一个可执行的实体。

    4.多方法交换x与y的值

    5.指针的自加与引用

    6.前置++与后置++

    前置++和后置++我觉得一个比较重要的问题是C++中重载两个操作符的时候如何区别:区分前置和后置 函数的参数有一个 (函数重载),后置++有一个(int)参数。

    7.inline的作用

    inline函数不像正常函数在调用时存在压栈和call的操作,它会把程序代码直接嵌入到调用代码段中,也就是说使用inline函数会增大二进制程序的体积,但是会使执行速度加快。

    同时,编译期间可以对参数进行强类型的检查,这是inline优于宏的一个方面。

    8.二维数组的表示

    9.ifndef的作用

    条件编译的语法,一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。

    10.KMP算法

    字符串匹配的高级算法

    11.函数调用方式

    • __cdecl               堆栈由调用者清除          参数从右至左的顺序压入堆栈内
    • __stdcall             堆栈由被调用者清除       参数从右至左的顺序压入堆栈内
    • __fastcall            堆栈由被调用者清除       部分参数保存在寄存器中,然后其他的压入堆栈内
    • thiscall(非关键字)  堆栈由被调用者清除       参数压入堆栈内,this指针保存在ECX寄存器内

    12.重载函数

        函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。不能利用返回类型进行重载!类中函数const和非const可以进行重载,其实原理是利用this指针的类型是const和非const进行重载,其实原理就是参数类型不同,const指针orconst引用调用的为const版本的函数~更多函数重载的知识

    13.构造函数和析构函数

        虚拟析构函数的使用场景是指向父类的指针实则为子类指针,调用delete的时候使用虚拟析构函数,防止部分内存泄露。

        构造函数不能声明为虚拟函数,因为对象的虚拟函数表的指针其实是在构造函数内编译器添加完成的代码,所以在构造函数执行之前无法访问到虚拟函数表的。

    14.合并两个有序链表

        类似归并排序,两个指针归并即可。

    15.100亿条记录的文本文件,取出重复数最多的前10条

        类似top k算法,无法全部读入内存的top k算法是利用容量为k的最大堆,达到线性时间的top k算法。

        首先利用hash table预处理每个元素出现的次数,然后利用次数执行top k算法。

    16.设计一个双向链表,并且提供一个可根据值删除元素的函数

        STL中的list底层及为双链表实现。

    17.二叉树的多种遍历算法实现

    18.有读和写的两个线程和一个队列,读线程从队列中读数据,写线程往队列中写数据

        生产者和消费者模型:

        使用信号灯和互斥量。

    semaphore mutex = 1;
    semaphore fillCount = 0;
    semaphore emptyCount = BUFFER_SIZE;
    
    procedure producer() {
        while(true) {
            item = produceItem();
            down(emptyCount);
                down(mutex);
                    putItemIntoBuffer(item);
                up(mutex);
            up(fillCount);
        }
    }
    procedure consumer() {
        while(true) {
            down(fillCount);
                down(mutex);
                    item = removeItemFromBuffer();
                up(mutex);
            up(emptyCount);
            consumeItem(item);
        }
    }
    

      不使用信号灯和互斥量。

    volatile unsigned int produceCount, consumeCount;
    TokenType buffer[BUFFER_SIZE];
     
    void producer(void) {
        while (1) {
            while (produceCount - consumeCount == BUFFER_SIZE)
                sched_yield(); // 缓冲区满
     
            buffer[produceCount % BUFFER_SIZE] = produceToken();
            produceCount += 1;
        }
    }
     
    void consumer(void) {
        while (1) {
            while (produceCount - consumeCount == 0)
               sched_yield(); // 缓冲区空
     
            consumeToken( buffer[consumeCount % BUFFER_SIZE]);
            consumeCount += 1;
        }
    }

    19.stack,heap,memory-pool

         

    20.TCP的流量控制和拥塞控制机制

         TCP的流量控制就是让发送方的发送速率不要太快,让接收方来得及接收。利用滑动窗口机制可以很方便的在TCP连接上实现对发送方的流量控制。TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。

        所谓的拥塞控制为防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制索要做的都有一个前提,就是网络能承受现有的网络负荷。流量控制往往指点对点通信量的控制,是一个端到端的问题。因特网建议标准RFC2581定义了进行拥塞控制的四种算法,即慢开始(Slow-start),拥塞避免(Congestion Avoidance)快重传(Fast Restrangsmit)和快回复(Fast Recovery)。

    21.写一个函数,返回一个字符串中只出现一次的第一个字符

         目前想到的方法就是利用hash表记录每个字符出现的次数,然后两次遍历即可找到只出现一次的第一个字符。

    22.求一个数组中第k大的数的位置

         

    23.面向对象继承,多态问题,如多态的实现机制

        虚拟函数,指针and引用

    24.内联函数什么时候不展开

         在内联函数内不允许用循环语句和开关语句。 如果内联函数有这些语句,则编译将该函数视同普通函数那样产生函数调用代码,递归函数(自己调用自己的函数)是不能被用来做内联函数的。内联函数只适合于只有1~5行的小函数。对一个含有许多语句的大函数,函数调用和返回的开销相对来说微不足道,所以也没有必要用内联函数实现。

    25.成员函数初始化列表有什么作用?什么必须在成员初始化列表中进行初始化?

        类的static变量在类的构造函数前已进行初始化!

        类对象的构造顺序:

        (a)分配内存,调用构造函数时,隐式/显式的初始化各数据成员(顺序和类中声明对象一致)。如果无成员初始化列表。隐式初始化阶段按照声明的顺序依次调用所有基类的缺省构造函数,然后所有成员类对象的缺省构造函数。

        (b)进入构造函数执行函数体内语句,函数体内的数据成员的设置被认为赋值,而不是初始化。

        所以,使用初始化列表的两个情况:

        1)必须使用初始化列表进行初始化![1]数据成员为类对象并且该类对象仅提供带参数的构造函数[2]const修饰的数据成员[3]引用数据成员;

        2)考虑效率的时候!因为未利用初始化列表而是在构造函数体内进行赋值,则调用了缺省构造函数和赋值运算符操作。如果数据成员为自定义的类对象,则效率比直接利用构造函数初始化低很多。

    27.指针与引用的区别

        相同点:

    •     都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。

        不同点:

    •     指针是一个实体,而引用仅是个别名
    •     引用只能并且必须在定义时被初始化一次,之后不可变(类似常量指针,引用自带常量指针属性);指针可变;
    •     引用没有const,指针有const,const的指针不能够改变;(int & const refer 不存在,因为引用本身就初始化一次不可变,但是const int &refer是存在的,指引用所指向的值不可改变)
    •     引用不能为空,指针可以为空
    •     sizeof针对指针得到的是指针的大小,针对引用得到的是指向对象的大小;
    •     指针的++操作和引用的++操作完全不同,指针为移动指针地址,引用++操作作用于指向的对象;
    •     引用是类型安全的,而指针不是类型安全的。

    28.创建空类时,哪些成员函数是系统默认的?

        构造函数,拷贝构造,赋值函数,析构函数,取址运算符,const取址运算符

    29.有10W个IP段,这些IP段之间都不重合,随便给定一个IP,求出属于哪个IP段

     

    30.网络编程(网络编程范式,非阻塞connect)

         常见的IO模型有阻塞、非阻塞、IO多路复用、异步。

    31.TCP/IP

     

    32.LINUX的命令,原理及底层实现

     

    33.LINUX编程,包括所有互斥的方法,多线程编程,进程间的通信

     

    34.一个一维数轴上的不同线段,求重复最长的两个线段

     

    35.有向带权图最短路径

     

    36.内存溢出和内存泄露有什么区别?

    • 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
    • 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

    37.利用互斥量和条件变量设计一个消息队列,具有以下功能:1)创建消息队列(消息中所含的元素);2)消息队列中插入消息;3)取出一个消息(阻塞方式);4)取出第一个消息(非阻塞方式)。注意互斥量,条件变量和队列系统提供

     

    38.非递归方法实现二叉树的遍历

        利用栈stack的方法和morris遍历方法,分别O(lgn)和O(1)的额外空间。

    39.cnwap和cnnet的区别

        CMWAP 和 CMNET 只是中国移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费上也存在差别。

    40.设计一个内存管理策略,要求可以保证多线程安全,防止内存越界等,效率不低于malloc()/free()函数

        

    41.排列组合问题

        排列递归dfs版本穷举,另外还可以有一些带剪枝的题目。

    42.若有序的关键字序列为{b,c,d,e,f,g,q,r,s,t},则在二分查找关键字b的过程中,先后进行比较的关键字依次是什么?

        此问题向上取整和向下取整也相关,而且与结束条件相关。

        [0,9]->4(f)

        [0,3]->1(c)

        [0,0]->0(b)

        如果是向下取整则为以上比较过程,依次f,c,b。

    43.有一个虚拟存储系统,若进程在内存中占3页(初始状态为空),若采用先进先出页面淘汰算法,当执行如下访问下列后,1,2,3,4,5,1,2,5,1,2,3,4,5, 会发生多少缺页?

         另外一个比较重要的淘汰算法LRU,最近最久未使用。

        3+8 = 11

    44.有一个顺序栈S,元素s1,s2,s3,s4,s5,s6,依次进栈,如果6个元素出栈顺序s2,s3,s4,s6,s5,s1,则顺序栈的容量至少应该有多少?

       s1进入,1,s2进入,2,s2弹出,s3进入,2,s3弹出,s4进入,2,s4弹出,s5进入,2,s6进入,3,s6弹出,s5弹出,s1弹出。

       根据以上过程所以顺序栈的容量至少为3才可以。

    45.[0,2,1,4,3,9,5,8,6,7]是以数组形式存储的最小堆,删除堆顶元素0后的结果是多少?

        自己理解:[1,2,5,4,3,9,7,8,6,0]

    46.某页式存储管理系统中,地址寄存器长度为24位,其中号占14位,则主存的分块大小是多少字节?

        页式存储管理是把主存储器分成大小相等的许多区,每个区称为一块,与此对应,编制程序的逻辑地址也分成页,页的大小与块的大小相等。

        (a) 地址转换:绝对地址 = 块号 * 块长 +块内地址

        块号是页号根据页表查询得到

        这里寄存器长度24位,号占14位,所以页面大小占10位,所以块的大小也为10位。

    47.运算符重载

    48.各种排序算法的使用与比较

    49.一维数组默认初始化问题

    • 如果不对数组进行任何初始化操作, 仅定义一个数组, 那么数组中这些元素的值是不确定的, 是系统中随机的一个值。

    50.const char *p1 = "hello";char *const p2 = "hello",有什么区别。

    const在指针和引用声明中位置的不同分别代表不同的意义。

    • const char *p1 等价于 char const *p1为指针指向内容为常量,指向字符串常量的指针;
    • char *const p2 为常量指针,指向字符串的常量指针。

    51.struct与class有什么区别和联系

    struct与class在C++中看起来没什么区别,只是使用习惯,不过说到区别可能还有2点吧。

    (a)默认的访问控制,struct默认访问控制public,class默认访问控制private,写代码时最好标明确访问控制。

    (b)class这个关键字还用于定义模板参数,like "typename"。关键字struct不能用于定义模板参数。

    52.函数指针和指针函数

    函数指针:char (*p)();p为指向函数的指针

    指针函数:char *p();返回指针的函数

    53.指针数组和数组指针

    指针数组:char *cp_array[];

    数组指针:char (*p_array)[];

    54.大端小端

    • 大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
    • 小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
    static union { char c[4]; unsigned long l; } endian_test = { { 'l', '?', '?', 'b' } };
    #define ENDIANNESS ((char)endian_test.l)
    //(如果ENDIANNESS=’l’表示系统为little endian,为’b’表示big endian )。
    

      利用union共享存储单元的原理。

    55.虚函数问题

    针对每个类存在一个虚拟函数表,每个类的实例中存在一个指向虚拟函数表的指针。

    56.如果判断单链表是否有环

    快慢指针,相遇则存在环。


    展开全文
  • 一名入门的asp.net程序员应该掌握的知识: (1)熟练使用Sql Server中企业管理器、查询分析器和事件探查器,能熟练编写T-SQL、存储过程、用户自定义函数、视图、触发器; (2)了解ASP.net服务器控件的生命周期; ...
  • http://blog.csdn.net/v_JULY_v  ①.本blog开通于2010年10月11日,高级C++/算法交流群:128691433;北京程序员联盟:172727781。②.狂热算法,热爱数据挖掘,关注机器学习、统计分析,爱好文学数学。③....
    http://blog.csdn.net/v_JULY_v           
    
    • ①.本blog开通于2010年10月11日,高级C++/算法交流群:128691433;北京程序员联盟:172727781。②.狂热算法,热爱数据挖掘,关注机器学习、统计分析,爱好文学数学。③.微博:研究者July,邮箱:zhoulei97@aliyun.com,或zhoulei0907@yahoo.cn,July,二零一三年八月七日。
    展开全文
  • IT企业笔试面试题目 常见智力题

    千次阅读 2012-10-09 21:26:51
    题目1】12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?  问题分析:  我们先把这12个人从低到高排列,然后,选择6个人排在第一排,那么剩下的6个肯定...

    【题目1】12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 


    问题分析: 
    我们先把这12个人从低到高排列,然后,选择6个人排在第一排,那么剩下的6个肯定是在第二排. 
    用0表示对应的人在第一排,用1表示对应的人在第二排,那么含有6个0,6个1的序列,就对应一种方案. 
    比如000000111111就对应着 
    第一排:0 1 2 3 4 5 
    第二排:6 7 8 9 10 11 
    010101010101就对应着 
    第一排:0 2 4 6 8 10 
    第二排:1 3 5 7 9 11 
    问题转换为,这样的满足条件的01序列有多少个. 
    观察1的出现,我们考虑这一个出现能不能放在第二排,显然,在这个1之前出现的那些0,1对应的人 
    要么是在这个1左边,要么是在这个1前面.而肯定要有一个0的,在这个1前面,统计在这个1之前的0和1的个数. 
    也就是要求,0的个数大于1的个数. 
    OK,问题已经解决. 
    如果把0看成入栈操作,1看成出栈操作,就是说给定6个元素,合法的入栈出栈序列有多少个. 
    这就是catalan数,这里只是用于栈,等价地描述还有,二叉树的枚举,多边形分成三角形的个数,圆括弧插入公式中的 
    方法数,其通项是c(2n, n)/(n+1). 


    【题目2】在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?
    假设时针的角速度是ω(ω=π/6每小时),则分针的角速度为12ω,秒针的角速度为72ω。 
    分针与时针再次重合的时间为t,则有12ωt-ωt=2π,t=12/11小时,换算成时分秒为1小时5分27.3秒,显然秒针不与时针分针重合,同样可以算出其它10次分针与时针重合时秒针都不能与它们重合。只有在正12点和0点时才会重合。


    【题目3】有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒


    10只老鼠按顺序排好每桶酒按照编号转换成二进制,给相应位置上是1的老鼠喝。最后按死掉的老鼠是哪几只,然后排成二进制,再转成十进制就是第几桶酒。比如:


    第70桶酒,70转换成二进制就是0001000110,那么就给第四、八、九只老鼠喝。如果最后死掉第三、七、八只老鼠,那么就是0010001100,转换成十进制就是140,即140桶酒有毒。


    【题目4】100层楼,两个鸡蛋。某层之上扔鸡蛋就会碎。问至少要测试多少次才能找出这层楼来。
    正确的方法是先假设最少判断次数为x,则第一个鸡蛋第一次从第x层扔(不管碎没碎,还有x-1次尝试机会)。如果碎了,则第二个鸡蛋在1~x-1层中线性搜索,最多x-1次;如果没碎,则第一个鸡蛋第二次从x+(x-1)层扔(现在还剩x-2次尝试机会)。如果这次碎了,则第二个鸡蛋在x+1~x+(x-1)-1层中线性搜索,最多x-2次;如果还没碎第一个鸡蛋再从x+(x-1)+(x-2)层扔,依此类推。x次尝试所能确定的最高楼层数为x+(x-1)+(x-2)+...+1=x(x+1)/2。 
    比如100层的楼,只要让x(x+1)/2>=100,得x>=14,最少判断14次。具体地说,100层的楼,第一次从14层开始扔。碎了好说,从第1层开始试。不碎的话还有13次机会,再从14+13=27层开始扔。依此类推,各次尝试的楼层依次为 
     
    14  27 = 14 + 13  39 = 27 + 12  ...  99 = 95 + 4  100
      
    现在推广成n层楼,m个鸡蛋: 
    还是动态规划。假设f[n,m]表示n层楼、m个鸡蛋时找到摔鸡蛋不碎的最少判断次数。则一个鸡蛋从第i层扔下,如果碎了,还剩m-1个鸡蛋,为确定下面楼层中的安全位置,还需要f[i-1,m-1]次(子问题);不碎的话,上面还有n-i层,还需要f[n-i,m]次(子问题,实体n层楼的上n-i层需要的最少判断次数和实体n-i层楼需要的最少判断次数其实是一样的)。 
     
    状态转移方程:f[n,m] = min{ 1+max(f[i-1,m-1], f[n-i,m]) | i=1..n }  初始条件:f[i,0]=0(或f[i,1]=i),对所有i  

    展开全文
  • 46家中外知名企业笔试面试题目

    千次阅读 2011-12-14 10:26:31
     英文面试题目  1. Algorithms  * What’s the difference between a linked list and an array?  * Implement an algorithm to sort a linked list. Why did you pick the metho d you did?  * ...
  • 汇集了我国各大型企业招聘时的笔试面试题目,主要是软件工程师、嵌入式的方向,包括微软、IBM、SONY等一些IT企业
  • 一名入门的asp.net程序员应该掌握的知识: (1)熟练使用Sql Server中企业管理器、查询分析器和事件探查器,能熟练编写T-SQL、存储过程、用户自定义函数、视图、触发器; (2)了解ASP.net服务器控件的生命周期; ...
  • 题目包含:1.基本SQL-SELECT语句 2.过滤和排序数据 3.单行函数 4.多表查询 5.分组函数 6.子查询 7.创建和管理表 8.数据处理 9.约束 10.视图 11.数据库对象 12.企业sql笔试题目
  • 华为--C++ 笔试面试题目

    千次阅读 2014-07-18 04:03:07
    华为--C++ 笔试面试题目   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个...
  • 企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到...
  • C语言笔试题目1

    千次阅读 2018-10-01 09:11:22
    100 条经典C语言笔试题目 题目来源: 1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目; 2、C 语言面试宝典(林锐《高质量编程第三版》)。 说明: 1、部分C 语言面试题中可能会参杂部分和C++ ...
  • 华为--C++ 笔试+面试题目

    千次阅读 2011-08-19 11:04:30
    华为--C++ 笔试面试题目   本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个...
  • 100条经典C语言笔试题目

    万次阅读 多人点赞 2017-03-21 19:17:41
    100 条经典C语言笔试题目 题目来源: 1、中兴、华为、慧通、英华达、微软亚洲技术中心等中 外企业面试题目; 2、C 语言面试宝典(林锐《高质量编程第三版》)。 说明: 1、部分C 语言面试题中可能会参杂...
  • PHP面试笔试宝典

    2018-12-05 20:03:00
    来自《PHP程序员面试笔试宝典》,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书。 PHP题目 一、单例模式是在应用程序中最多只能拥有一个该类的实例存在,一旦创建就...
  • 知名企业面试笔试

    万次阅读 2006-07-06 17:06:00
    知名企业面试笔试题 46家中外知名企业面试题目 微软 智力题 1.烧一根不均匀的绳子,从头烧到尾总共需要1个小时,问如何用烧绳子的方法来确定 半小时的时间呢? 2.10个海盗抢到了100颗宝石,每一颗都一样大小且...
  • 本书针对当前各大 IT 企业面试笔试中的特性与侧重点,精心挑选了近 3 年多家顶级 IT 企业的 iOS 面试笔试真题,由于这些企业涉及业务包括系 统软件、搜索引擎、电子商务、手机软件、安全关键软件等领域,所以面 试...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 320
精华内容 128
关键字:

企业面试笔试题目