2014.10.24面试总结

22 篇文章 0 订阅
18 篇文章 0 订阅

1.代码题,用C++实现一个容量为N的循环队列类,要求提供push和pop接口

    底层数据结构用一个int数组data[N]

    设置两个坐标,第一个坐标head表示队首,第二个坐标tail表示队尾,初始时head=tail=0

    队列满时的判断条件是:(tail+1)%N==head

    队列空时的判断条件是:tail==head

    注意:tail实际指向下一个元素入队时的坐标,此种方法会使N个空间中只有N-1个能被循环队列使用

    push入队时,先判断队列是否已满,如果没满则往data[tail]处写数据,之后tail=(tail+1)%N

    pop出队时,先判断队列是否已空,如果没空则从data[head]处读数据,之后head=(head+1)%N


2.代码题,用C++实现一个数据结构,它表示一堆整数的集合,并且提供两个接口:add()向集合中添加一个整数,count(int k)返回集合中比k小的元素的个数

    基本思想:搜索二叉树,每个结点存储其左子树的结点数量lnum

    add操作时,从根结点开始与插入值比较,如果结点的值比插入值大,则lnum++,同时结点移向其左孩子;如果结点的值比插入值小,则结点移向其右孩子。移动过程中要记录上一个结点pre以及移动的方向,最后当前结点为NULL时,插入新结点,并把新结点设为上一个结点pre的左孩子或右孩子(根据移动方向判断)

    count操作时,设置一个计数变量cnt=0,从根结点开始与k比较,如果结点的值比k小,则cnt+=当前结点的lnum+1,然后当前结点移向其右孩子;如果当前结点的值比k大,则直接移向其左孩子。结束循环的条件是当前结点为NULL


3.socket编程中间件ICE介绍

    ICE(Internet Communications Engine)是ZeroC提供的一款高性能的中间件,基于ICE可以实现电信级的解决方案。前面我们提到过在设计网站架构的时候可以使用ICE实现对网站应用的基础对象操作,将基础对象操作和数据库操作封装在这一层,在业务逻辑层以及表现层(java,php,.net,python)进行更丰富的表现与操作,从而实现比较好的架构。基于ICE的数据层可以在未来方便的进行扩展。ICE支持分布式的部署管理,消息中间件,以及网格计算等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值