北京中科大洋科技发展股份有限公司笔试题目

逻辑测试题

1. 12,13,16,25,52,(  )。

    A. 81    B. 93    C. 133    D. 146

2. 7,14,10,12,14,9,19,5,(  )。

    A. 25    B. 21    C. 16    D. 18

3. 1,3,7,13,21,31,(  )。

    A. 43    B. 35    C. 41    D. 51

4. 南之于西北,相当于西之于(   )。

    A. 西北    B. 东北    C. 西南    D. 东南

5. 某正方体的各个面都是白色。现将其的任意的2个面分别染成绿色和红色。问能得到多少种不同的彩色正方体?

    A. 2    B. 4    C. 6    D. 8

6. 商场销售某种商品的加价幅度为其进货价的2/5,现商场决定将加价幅度减半来促销,商品售价比以前将低了54元。问商品的原售价多少元?

    A. 324    B. 270    C. 135    D. 378

7. 1 -> 5,2 -> 15,3 -> 215,4 -> 2145,5 -> ?

8. 某人花8元买个一只鸡,9元卖了,再用10元买回来,又11元卖掉。此人盈亏多少?

9. 小红、小兰、小慧三姐妹,年龄互不相同,住在丰台区、通州区、朝阳区三个地方。小红与住在通州区的姐妹年龄不同,小慧比住在朝阳区的姐妹年龄小,住在通州区的姐妹比小兰年龄大。
那么她们按照年龄从大到小的顺序是?

10. 宋江、林冲、武松各自买个一辆汽车,其中一个买了宝马,一个买了奥迪,另一个买了陆虎。吴用作出三个判断:
a)宋江买的是陆虎;
b)林冲买的不是奥迪;
c)武松买的不是陆虎。
已知这三个判断中有且只有一个正确。问:他们各自买的什么车?

性格与心理测试题

这部分题目编辑起来很麻烦,以后再说吧。

技术笔试题

注意:对于多选题,选对且选全则得全部分数,选对但不全则得部分分数,选则了错误选项则不得分。

第1部分:公共必答题(应聘任何方向,均应作答)(R01)

注意:如无特殊说明,本部分题目均只考虑 Windows NT、x86 32-bit 环境。

1.

int32_t n = 0xFFFFFFF0;

n的值为:

A. 16    B. -16    C. 2^32-16    D. -2^32+16

2. 下列C++中的运算符,哪些不能重载?

A. [](array subscript)    B. =(assignment)    C. ++(increment)

D. ->(member selection)    E. .(member selection)    F. new(new)

3~4题组

阅读代码,回答问题。

typedef struct _BUFFER
{
    char *pBuffer;
    int nLength;
    int Num[10];
    _BUFFER(int length = 0)
    {
        pBuffer = nullptr;
        nLength = length;
    }
} BUFFER;

void TestBuffer()
{
    BUFFER buffer;
    BUFFER &bref = buffer;
    size_t Size1 = sizeof(BUFFER);
    size_t Size2 = sizeof(bref);
}

3. Size1的值为

A. 12    B. 18    C. 20    D. 48

4. Size1的值为

A. 4    B. 12    C. 18    D. 20    E. 48

5~6题组

阅读代码,回答问题。

struct Test
{
    int n1;
    int n2;
    Test(int n1, int n2)
    {
        this->n1 = n1;
        this->n2 = n2;
    }
};

void TestFunc()
{
    Test **ppTest = nullptr;
    int nSize = 10;
    //____________________________________ // new for ppTest
    Test **ppTemp = ppTest;
    for (int i = 0; i < nSize; ++i)
    {
        //____________________________________ // new for each element
    }
}

5. 第一个下划线出,哪些写法正确?

A. ppTest = new Test**[nSize];

B. ppTest = new Test**(nSize);

C. ppTest = new Test*[nSize];

D. ppTest = new Test*(nSize);

6. 第二个下划线出,哪些写法正确?

A. *ppTemp = new Test(i, i); ppTemp++;

B. *ppTemp = new Test(i, i); ppTemp += sizeof(Test*);

C. *ppTemp = new Test(i, i); ppTemp += sizeof(Test);

D. ppTemp[i] = new Test(i, i);

7~9题组

阅读代码,回答问题。

void Println(const char *a)
{
    std::cout << a << std::endl;
}

class Class1
{
public:
    Class1()
    {
        m_nMax = 50;
        m_pBuffer = new char[m_nMax];
        Println("new Class1 buffer.");
    }
    ~Class1()
    {
        if (m_pBuffer != nullptr)
        {
            delete m_pBuffer;
            m_pBuffer = nullptr;
            Println("free Class1 buffer.");
        }
    }
protected:
    char *m_pBuffer;
    int m_nMax;
};

class ClassSub :public Class1
{
public:
    ClassSub()
    {
        m_nMax = 100;
        m_pBuffer = new char[m_nMax];
        Println("new ClassSub buffer.");
    }
    ~ClassSub()
    {
        if (m_pBuffer != nullptr)
        {
            delete m_pBuffer;
            m_pBuffer = nullptr;
            Println("free ClassSub buffer.");
        }
    }
protected:
    char *m_pBuffer;
    int m_nMax;
};

void TestFunction()
{
    Class1 *pClass = new ClassSub();
    delete pClass; // ------------------------------ (1)
    ClassSub *pSub = new ClassSub();
    delete pSub;  // ------------------------------- (2)
}

7. 执行完(1)这一行后,输出信息为

8. 执行完(2)这一行后,输出信息为

A. new Class1 buffer. new ClassSub buffer. free ClassSub buffer. free Class1 buffer.

B. new ClassSub buffer. new Class1 buffer. free ClassSub buffer. free Class1 buffer.

C. new Class1 buffer. new ClassSub buffer. free Class1 buffer. free ClassSub buffer.

D. new ClassSub buffer. new Class1 buffer. free ClassSub buffer. free Class1 buffer.

E. new Class1 buffer. new ClassSub buffer. free Class1 buffer.

F. new ClassSub buffer. new Class1 buffer. free Class1 buffer.

G. new Class1 buffer. new ClassSub buffer. free ClassSub buffer.

H. new ClassSub buffer. new Class1 buffer. free Class1 buffer.

9. 调用 TestFunction 后,泄露的内存的字节数为

A. 无泄露    B. 50    C. 100    D. 150

10. 下面是 CTime 类的构造函数之一:

CTime(const SYSTEMTIME &st, int nDST = -1) throw();

对该函数声明中“throw()”的解释,正确的是?

A. 可能抛异常,异常的类型不确定;

B. 可能抛异常,异常的类型为 std::exception 或其派生类;

C. 不抛异常;

D. 无作用。

11~12题组

阅读代码,回答问题。

class CMyObject
{
public:
    enum enumMyObjectExceptionCode
    {
        InvalidParamException = 0,
    };
    CMyObject(int nType, const char *strName)
    {
        if (nType < 0 || nType >= 100)
        {
            throw InvalidParamException;
        }
        m_nType = nType;
        m_strName = strName;
    }
    bool DoSomething() { return true; }
    ~CMyObject() {}
protected:
    int m_nType;
    std::string m_strName;
};

bool TestException(int n)
{
    bool bOK = false;
    CMyObject *pObject = nullptr;
    try
    {
        pObject = new CMyObject(n, "TempObject");
        bOK = pObject->DoSomething();
        delete pObject;
        pObject = nullptr;
    }
    ___________________________________ // catch possible exception
    {
        bOK = false;
    }
    return bOK;
}

11. 在下划线处,要捕获 CMyObject 构造函数中可能抛出的异常,下面那些代码正确?

A. catch(CMyObject::enumMyObjectExceptionCode *e)

B. catch(CMyObject::enumMyObjectExceptionCode e)

C. catch(CMyObject::enumMyObjectExceptionCode &e)

D. catch(int *e)

E. catch(int e)

F. catch(int &e)

12. 如果调用 TestException(100),则内存泄漏情况为

A. 一定没有泄露    B. 一定有泄露    C. 不能确定

13. 在 STL 中,下面哪些类型的迭代器能代替 Output 类型的迭代器?

A. input iterator    B. forward iterator    C. bidirectional iterator    D. random-access iterator

14. 下面是 STL 中 sort 算法的函数声明之一:

template<class _RandomAccessIterator>
void sort(_RandomAccessIterator _First, _RandomAccessIterator _Last);

根据该声明,sort 函数支持对下面哪些类型的 STL 容器进行排序?

A. list    B. vector    C. queue    D. deque    E. stack    F. map    G. set

15. 在 Windows 操作系统下,下面哪些对象可以用来进行多进程之间的同步?

A. Event    B. Critical Section    C. Mutex    D. Semaphore

第2部分:应聘网络技术开发方向笔试题(R02)

一、选择题

1. 通常所说的 MTU 是由于网络模型中(1)层决定的,以太网 MTU 值为(2)字节。

(1)A. 数据链路曾    B. 网络层    C. 传输层    D. 以上答案都不对

(2)A. 1500    B. 1518    C. 1492    D. 65535

2. 下列对交换机的描述错误的是

A. 不能阻止网络广播数据包

B. 能阻止不正确 MAC 地址的数据包在网络中扩散

C. 转发数据包

D. 不能进行路由

3. 在 ping 程序执行过程中,最不可能使用到的协议是

A. 以太网协议    B. IP 协议    C. ARP 协议    D. TCP 协议

4. 一个可靠的传输协议,最可能不需要实现的是

A. 拥塞控制    B. 流量控制    C. 数据包重传    D. 丢包确认

5. 一个 UDP 数据包在网络中传输的过程中,不可能发生的是

A. 路由    B. IP 转发    C. IP 分片    D. 窗口控制

6. IP 的不可靠的原因描述,下列错误的是

A. 分组交换技术    B. 存储转发    C. 无丢包确认    D. 网络实现的分层架构

7. 采用多线程以 UDP 方式进行大量数据的传输,最可能不须考虑的是

A. 乱序重排    B. 丢包确认    C. 路由策略    D. 流量控制

8. 在下列网络环境中进行数据传输,常常不采用 UDP 方式的是

A. 高延迟网络    B. 高丢包率网络    C. 广域网    D. 局域网

9. 下列协议的数据包中,哪种协议存在但可以不强制有校验和

A. IP    B. ICMP    C. UDP    D. TCP

10. 下列说法错误的是

A. TCP 具有慢启动的特性

B. 组播只能在 UDP 中实现

C. 对一个标记有不可达 MAC 地址的帧数据,路由器可能反馈 ICMP 通知

D. Windows 协议栈内采用 TCP 传输,IP 层将不进行 IP 分片

11. 以下名词,不属于同类的是

A. RTSP    B. HTTP    C. SNMP    D. RARP

12. 下列说法错误的是

A. TCP 采用2个字节标识窗口大小

B. IP 地址 127.0.0.102 不是回环地址

C. FTP 的被动连接方式指的是数据连接在创建时,Server响应客户端主动连接请求

D. 局域网与以太网没有必然的联系

13. 导致 IP 数据包乱序的直接原因是

A. 动态路由    B. IP 分片    C. 路由器存储转发    D. 丢包无确认

14. 下列说法错误的是

A. 异步 I/O 能提高 CPU 的使用率

B. 数据压缩能提高网络带宽占用率

C. 子网掩码机制客观上缓解了 IP 地址匮乏的问题

D. 网络延迟越大,现有的 TCP 性能越表现不佳

二、问答题(每题10分)

1. 若采用 UDP 进行高效的网络传输,你将考虑哪些因素?

2. 为提高程序运行性能,你可能采用哪些优化尝试?

3. 目前的 TCP 协议还有哪些限制与不足?

第3部分:应聘视音频压缩编码算法方向笔试题(R03)

1. VCD 和 DVD 的视频格式、音频格式是什么?蓝光盘里可能的视频格式和音频格式有哪些?

2. H.262,H.263,H.264 是哪个国际组织的标准?MPEG-2,MPEG-4是哪个国际组织的标准?这些标准之间的关系?

3. DVB 使用了 MPEG-2 系统层(13818-1)的 ____ 流?

4. MP3 音频帧对应采样数量是多少?MP3 最高码率是多少?

5. YUV 分量都为零时对应的是什么颜色?720×576分辨率视频,在420颜色格式、25帧每秒时的码率是多少?采用 MPEG-2 和 H.264 压缩上述视频,码率一般在什么范围?

6. 对于一个 IBP 序列,编码码流为 I0 B0 B1 P1 B2 B3 P2 B4 B5 P3 B6 B7 I1 B8 B9,写出解码器帧后重排后的帧顺序。

7. 简述 MPEG-2 或 MPEG-4 或 H.264(任选一个)的视频压缩过程的主要步骤,简述影响编码质量的主要环节。编码过程中是在哪个环节显著降低数据量的?

8. 在 Intel 的多核 CPU 上进行一个编解码器的优化,简述可以采用的主要方法。如果可能请结合某个实际项目来简述。

9. 客观图像质量评价,通常采用什么方法?对所列方法作简单叙述。

10. 简述环路滤波(loop filter)的概念和作用。

第4部分:应聘操作系统内核驱动开发方向笔试题(R04)

1. 编写函数func,要求将参数的第0位置1后,再求补码。要求,函数体除了一条return语句,不能有其他任何语句。

uint32_t func(uint32_t a)
{
    return ________;
}

2. 正确定义函数指针的是

A. void (*PFUN)(void*) = nullptr;

B. void __stdcall(*PFUN)(void*) = nullptr;

C. void PFUN (void*) = nullptr;

D. void __stdcall PFUN(void*) = nullptr;

3. 已知宏定义

#define paster(n) printf("token" #n " = %d", token##n)

那么语句

paster(10);

的展开形式是

A. printf("token", 10 "=%d", tokenn);

B. printf("token", n "=%d", tokenn);

C. printf("token", "10" "=%d", tokenn);

D. printf("token", 10 "=%d", tokenn);

4. 以下内核同步对象中,哪几个会导致当前线程进入睡眠

A. Mutex    B. SpinLock    C. Semaphore    D. Event

5. 内核线程具有以下哪几个特点?

A. 能够访问内核空间地址

B. 能够访问用户空间地址

C. 能够执行设备 I/O 操作

D. 能够读写磁盘文件

E. 与用户线程比,其堆栈长度更大

6. 以下哪几种情况发生时,当前应用程序会进入内核态

A. 应用程序执行了除以0的操作

B. 应用程序读取无效内存地址

C. 应用程序读写了 FPU、MMX 寄存器

D. 应用程序读取进程间共享内存

E. 应用程序执行了 Sleep 函数

7. 关于 Windows 的线程切换,以下说法错误的是

A. 堆栈必须执行切换

B. 页面映射表必须执行切换

C. 切换时必须将关闭中断响应

D. 切换必须在内核空间进行

E. 只要有高优先级的就绪线程存在,低优先级的线程就永远得不到运行的机会

F. 比当前运行线程优先级更高的就绪线程有可能不能立即进行切换

8. 请描述在32位 Linux 或Windows 上,当应用程序访问内存时,系统是经过一个怎样的过程,将虚拟地址转换为物理地址的(CPU 为 Intel386)。

9. 简述最近最少使用页面置换算法 LRU 和最近没有使用页面算法 NRU 两种页面置换算法的思想。

10. 已经双向链表的节点定义如下:

typedef struct NODE_T
{
    int idx;
    struct NODE_T *pPre;
    struct NODE_T *pNext;
}NODE, *PNODE;

typedef struct LIST_T
{
    int NodeCount; // 队列中节点数量
    struct Lock_T; // 队列锁
}LIST, *PLIST;

void Lock(struct Lock_T *l);       // 加锁。此函数一定成功。
void UnLock(struct Lock_T *l);     // 解锁。此函数一定成功。

请用C语言实现函数

a)int ListInsertNode(PLIST pList, PNODE pNew); // 插入节点在末尾

b)int ListRemoveNode(PLIST pList, PNODE pRemoving); // 删除节点

第5部分:应聘C++开发(A类)方向笔试题(R05)

1. 请回答“第4部分”第1题。

2. 头文件经常在开头出现#ifndef、#define,结尾处出现#endif。简述它们的作用。

3. 已知如下的类:

class A
{
private:
    void *m_p;
public:
    A() {};
    virtual ~A() {}
};

如果编译环境是32位且编译选项是4字节对齐,那么 sizeof(A) 的值为多少?

4. 正确的函数指针定义形式是:

A. void (*PFUN)(void*) = nullptr;

B. void __stdcall(*PFUN)(void*) = nullptr;

C. void PFUN (void*) = nullptr;

D. void __stdcall PFUN(void*) = nullptr;

5. 请回答“第4部分”第3题。

6. 简述C语言中,static关键字在函数内针对变量的声明,在函数外针对变量的声明,以及在函数外针对函数的声明分别表示什么。

7. 请回答“第4部分”第10题。

8. 已知操作接口

class Oper_ITF
{
public:
    virtual void PrintName() = 0; // 用于打印接口对象的名称
};

请使用C++语言编写代码,要求:

a)提供该操作接口的一个实现,不允许使用内联函数。

b)提供C语言形式的操作接口获取函数CreateOper,要求该函数的返回值为BOOL类型。

c)提供C语言形式的操作接口释放函数DeleteOper,要求该函数的返回值为BOOL类型。

9. 设计模式:

a)简述创建设计模式的意图。

b)列举一个您所知道的创建型模式的名称。

c)请描述下述行为所包含的设计模式:

我在家里看电视,妹妹在家里看书,妈妈在厨房里做饭。我和妹妹在等吃饭,当妈妈说了一声“来吃饭了”。我关掉电视,妹妹放下书本,我们上桌准备吃饭。

第6部分:应聘C++开发(B,C类)方向笔试题(R06,R07)

1. 下面 MFC 封装的同步对象中,在调用 Lock 返回成功后,哪些对象可以支持在相同线程中继续多次调用 Lock,而不会造成该线程的阻塞?

A. CCriticalSection    B. CMutex    C. CSemaphore    D. 都不支持

2. MFC CScrollView 中,调用 GetCursorPos 获取鼠标当前位置后,要想把鼠标位置转换为 ScrollView 中的坐标,必须要调用下面 CScrollView 中的哪些函数?

A. GetDeviceScrollSizes    B. GetScrollPosition    C. GetTotalSize    D. ScrollToPosition

3. 在 Windows GUI 程序的主线程中,如果程序需要等待另一个线程触发一个 Event,直接调用 WaitForSingleObject 函数,超时时间设置比较长的话,会导致主线程阻塞,不能及时响应窗口消息。这种情况下,可以使用下面哪些 API 函数,不会影响程序对消息的接收和处理?

A. WaitForSingleObjectEx

B. WaitForMultipleObjects

C. WaitForMultipleObjectsEx

D. MsgWaitForSingleObject

E. MsgWaitForSingleObjectEx

F. MsgWaitForMultipleObjects

G. MsgWaitForMultipleObjectsEx

4. 下面哪些关键词是标准 SQL 不支持的?

A. INNER JOIN    B. OUT JOIN    C. RIGHT JOIN    D. UNION JOIN

5. 在 SQL Server 中,下面哪些类型是设计用来保存大文本字段的?

A. BLOB    B. CLOB    C. IMAGE    D. NTEXT    E. TEXT

6. 下面这段 MFC 代码存在哪些问题?

void TestFileSize()
{
    CFile *pFile = nullptr;
    try
    {
        pFile = new CFile(L"D:\\test.txt", CFile::modeRead | CFile::shareDenyNone);
        ULONGLONG Len = pFile->GetLength();
        pFile->Close();
        CString str;
        str.Format(L"The file is %lu64 bytes long.", Len);
        AfxMessageBox(str);
    }
    catch (CFileException *e)
    {
        e->ReportError();
    }
    delete pFile;
}

7. MFC 画图程序中,有哪些方式可以减少画面的闪烁?

8. 多线程中常用的同步机制是什么,有什么优缺点?简单举几个例子。

9. 线程之间如何通讯?举几个常用的例子。

10. 用您所知道的至少2种方法,写出创建 Windows 线程的伪代码。

转载于:https://my.oschina.net/jthmath/blog/608491

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值