1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:()
CFHGEBDA
CDFEGHBA
FGHCDEBA
CFHGEDBA
2 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:()
8 3 2 5 1 6 4 7
3 2 8 5 1 4 6 7
3 8 2 5 1 6 7 4
8 2 3 5 1 4 7 6
//初始化序列:1 8 6 2 5 4 7 3,,小根堆就是要求结点的值小于其左右孩子结点的值,左右孩子的大小没有关系,那么小根堆排序之后为:1 2 4 3 5 6 7 8;中序遍历:先遍历左孩子,然后访问根结点,最后访问有孩子,故遍历结果为:8 3 2 5 1 6 4 7
3 S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?()
37.5%
32.5%
28.6%
26.1%
4 静态变量通常存储在进程哪个区?()
栈区
堆区
全局区
代码区
5 IP地址131.153.12.71是一个()类IP地址。
A
B
C
D
//IP地址分类 A类网络的IP地址范围为1.0.0.1-127.255.255.254;
B类网络的IP地址范围为:128.1.0.1-191.255.255.254;
C类网络的IP地址范围为:192.0.1.1-223.255.255.254。
6 下推自动识别机的语言是:()
0型语言
1型语言
2型语言
3型语言
//在自动机理论中,下推自动机(Pushdown automaton)是使用了包含数据的栈的有限自动机。使用的语言为2型语言。
7 浏览器访问某页面,HTTP协议返回状态码为403时表示:()
找不到该页面
禁止访问
内部服务器访问
服务器繁忙
8 如果某系统15*4=112成立,则系统采用的是()进制。
6
7
8
9
9 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:()
a(000) b(001) h(01) i(10) o(11)
a(0000) b(0001) h(001) o(01) i(1)
a(000) b(001) h(01) i(10) o(00)
a(0000) b(0001) h(001) o(000) i(1)
10 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?()
EDCBA
DECBA
DCEAB
ABCDE
11 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?
1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数
123
231
321
213
12 递归函数最终会结束,那么这个函数一定?
使用了局部变量
有一个分支不调用自身
使用了全局变量或者使用了一个或多个参数
没有循环调用
13 编译过程中,语法分析器的任务是
分析单词是怎样构成的
分析单词串是如何构成语言和说明的
分析语句和说明是如何构成程序的
分析程序的结构
14 进程进入等待状态有哪几种方式?
CPU调度给优先级更高的线程
阻塞的线程获得资源或者信号
在时间片轮转的情况下,如果时间片到了
获得spinlock未果
15当n=5时,下列函数的返回值是:()
int foo(int n) {
if (n < 2)
return n;
return foo(n - 1) + foo(n - 2);
}
5
7
8
10
16下列程序的运行结果为:
#include<iostream>
using namespace std;
void main() {
int a = 2;
int b = ++a;
cout << a / 6 << endl;
}
0.5
0
0.7
0.6666666-
17 下列哪两个数据结构,同时具有较高的查找和删除性能?()
有序数组
有序链表
AVL树
Hash表
18 下列排序算法中,哪些时间复杂度不会超过nlogn?
快速排序
堆排序
归并排序
冒泡排序
排序法 | 平均时间 | 最差情形 | 稳定度 | 额外空间 | 备注 |
冒泡 | O(n2) | O(n2) | 稳定 | O(1) | n小时较好 |
交换 | O(n2) | O(n2) | 不稳定 | O(1) | n小时较好 |
选择 | O(n2) | O(n2) | 不稳定 | O(1) | n小时较好 |
插入 | O(n2) | O(n2) | 稳定 | O(1) | 大部分已排序时较好 |
基数 | O(logRB) | O(logRB) | 稳定 | O(n) | B是真数(0-9), R是基数(个十百) |
Shell | O(nlogn) | O(ns) 1<s<2< span=""> | 不稳定 | O(1) | s是所选分组 |
快速 | O(nlogn) | O(n2) | 不稳定 | O(nlogn) | n大时较好 |
归并 | O(nlogn) | O(nlogn) | 稳定 | O(1) | n大时较好 |
堆 | O(nlogn) | O(nlogn) | 不稳定 | O(1) | n大时较好 |
19 Unix系统中,哪些可以用于进程间的通信?()
Socket
共享内存
消息队列
信号量
20 TCP和IP分别对应了OSI中的哪几层?()
Application layer
Presentation layer
Transport layer
Network layer
21 同一进程下的线程可以共享以下?
stack
data section
register set
file fd
解析: 线程共享的内容包括:
1.进程代码段
2.进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)
3.进程打开的文件描述符、
4.信号的处理器、
5.进程的当前目录和
6.进程用户ID与进程组ID
线程独有的内容包括:
1.线程ID
2.寄存器组的值
3.线程的堆栈
4.错误返回码
5.线程的信号屏蔽码
22 如何减少换页错误?
进程倾向于占用CPU
访问局部性(locality of reference)满足进程要求
进程倾向于占用I/O
使用基于最短剩余时间(shortest remaining time)的调度机制
23 同步机制应该遵循哪些基本准则?
空闲让进
忙则等待
有限等待
让权等待
24 设计模式中,属于结构型模式的有哪些?
状态模式
装饰模式
代理模式
观察者模式
25设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按二路归并方法对该序列进行一趟扫描后的结果为 1 。
(输出结果请按照以下格式:ABCDEFG,字母之间没有逗号)
1 DQFXAPBNMYCW
26 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是 1 ;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是 2 。
参考答案 QACSQDFXRHMY
参考答案 FHCDQAMQRSYX
27 二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为: 1 , 2 。
参考答案 011011110100
参考答案 011011100000
地址011011110000,可以被2^(2+1)整除,所以伙伴地址是其下半部,加4就行,所以答案是011011110100;
16大小时,不能被2^(4+1)整除,所以伙伴地址是其上半部,地址减去16,结果为0110 1110 0000。至于为什么这样整除决定,请查看伙伴地址定义
28 设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:
typedef struct node
{
int data;
struct node *lchild,*rchild;
}node;
int N2,NL,NR,N0;
void count(node *t)
{
if (t->lchild!=NULL)
if (t->rchild!=NULL) N2++;
else NL++;
else if (t->rchild!=NULL) NR++;
else N0++;
if(t->lchild!=NULL) count(t->lchild);
if(t->rchild!=NULL) count(t->rchild);
}/* call form :if(t!=NULL) count(t);*/
29 请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户
30 A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
腾讯2015春招移动客户端开发练习卷
1 (iOS开发选做)实现多线程都有哪几种方法?
使用@synchronized(self)
使用GCD
使用NSOperationQueue
使用@thread
//NSThread, GCD, NSOperationQueue
2 Intent传递数据时,下列的数据类型哪些可以被传递
Serializable
charsequence
Parcelable
Bundle
intent可以传递8种基本数据类型和2个实现序列化和parcelable接口的2个对象.实现序列化的对象存放在本地文件,实现parcelable的对象存放在内存中.
3 在android中使用Menu时可能需要重写的方法有?
onCreateOptionsMenu()
onCreateMenu()
onOptionsItemSelected()
onItemSelected()
android中有三种菜单
(1)选项菜单Options menus :一个Activity只能有一个选项菜单,在按下Menu键时,显示在屏幕下方。
(2)上下文菜单Context menus :为Activity中的任何一个视图注册一个上下文菜单,“长按”出现。
(3)弹出式菜单Popup menus :依赖于Activity中的某个一个视图。
4 android中使用SQLiteOpenHelper这个辅助类时,可以生成一个数据库,并可以对数据库版本进行管理的方法可以是?
getWriteableDatabase()
getReadableDatabase()
getDatabase()
getAbleDatabase()
5 android 关于service生命周期的onCreate()和onStart()说法正确的是?
当第一次启动的时候先后调用onCreate()和onStart()方法
当第一次启动的时候只会调用onCreate()方法
如果service已经启动,将先后调用onCreate()和onStart()方法
如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法
当第一次启动的时候先后调用onCreate()和onStart()方法
,
如果service已经启动,再次启动的话只会执行onStart()方法,不在执行onCreate()方法
。
6 下面是属于GLSurFaceView特性的是?
管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。
管理一个EGL display,它能让opengl把内容渲染到上述的surface上。
让渲染器在独立的线程里运作,和UI线程分离。
可以直接从内存或者DMA等硬件接口取得图像数据
7 模态视图专用属性有哪些?
UIModalPresentationFullScreen,全屏状态,是默认呈现样式,iPhone只能全屏呈现。
UIModalPresentationPageSheet,它的宽度是固定的768点,在iPad竖屏情况下则全屏呈现。
UIModalPresentationFormSheet,它的是固定的540x620点,无论是横屏还是竖屏情况下呈现尺寸都不会变化。
UIModalPresentationCurrentContext,它与父视图控制器有相同的呈现方式。
8 NSAssert类似的宏有哪些?
NSAssert1
NSAssert2
NSAssert3
NSAssert4
查api知道有
NSAssert,
NSAssert1,
NSAssert2,
NSAssert3,
NSAssert4,
NSAssert5
9 AddressBookUI框架中的视图控制器?
ABPeoplePickerNavigationController
ABPersonViewController
ABNewPersonViewController
ABUnknownPersonViewController
10 创建联系人使用的函数有哪些?
ABPersonCreate
ABRecordSetValue
ABMultiValueCreateMutable
ABAddressBookSave
11 修改联系人使用的函数有哪些?
ABPersonCreate
ABRecordSetValue
ABAddressBookGetPersonWithRecordID
ABAddressBookAddRecord
12 表视图的相关类有哪些?
UITableView
UITableViewController
UITableViewDelegate
UITableViewDataSource
13 iOS中导航设计模式有几种?
平铺导航
标签导航
树形导航
模态视图导航
14 为什么说Object-C是runtime language?
将数据类型的确定由编译时,推迟到了运行时
运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法。
驾驶A继承了B类,那么在编译时就已经生成了A的实例
多态是指不同对象以自己的方式响应相同的消息的能力
15 android通过startService的方式开启服务,关于service生命周期的onCreate()和onStart() 说法正确的是哪两项
当第一次启动的时候先后调用 onCreate()和 onStart()方法
当第一次启动的时候只会调用 onCreate()方法
如果 service 已经启动,将先后调用 onCreate()和 onStart()方法
如果 service 已经启动,只会执行 onStart()方法,不在执行 onCreate()方法
16 Android中Looper的实现原理,为什么调用Looper.prepare()就在当前线程关联了一个Looper对象,它是如何实现的。
17 简述Andriod如何处理UI与耗时操作的通信,有哪些方式及各自的优缺点。
18 用Object-C定义并实现一个基于数组的循环队列类,当队列放满需支持动态的扩展队列长度。
转:
#import <Foundation/Foundation.h>
@interface LoopQueue : NSObject
-( instancetype )initWithItem:( NSObject *)item andCapcity:( NSUInteger )capacity;
-( instancetype )init;
-( void )enqueue:( NSObject *)item;
-( NSObject *)dequeue;
@end
#import "LoopQueue.h"
#define DEFAULT_SIZE 10
@interface LoopQueue ()
@property ( nonatomic ) int first;
@property ( nonatomic ) int last;
@property ( nonatomic ) NSUInteger capacity;
@property ( nonatomic ) NSMutableArray *elementData;
@end
@implementation LoopQueue
-( instancetype )initWithItem:( NSObject *)item andCapcity:( NSUInteger )cap
{
self . first = - 1 ;
self . last = - 1 ;
self . capacity = cap;
self . elementData = [ NSMutableArray arrayWithCapacity :cap];
if (item == nil ) {
return self ;
}
[ self . elementData addObject :item];
return self ;
}
-( instancetype )init
{
self = [[ LoopQueue alloc ] initWithItem : nil andCapcity : DEFAULT_SIZE ];
return self ;
}
-( BOOL )isFull
{
return ( _first == 0 && _last == _capacity - 1 ) || _first == _last + 1 ;
}
-( BOOL )isEmpty
{
return self . first == - 1 ;
}
-( void )enqueue:( NSObject *)item
{
if (![ self isFull ]) {
if ( _last == _capacity - 1 || _last == - 1 ) {
self . elementData [ 0 ] = item;
_last = 0 ;
if ( _first == - 1 ){
_first = 0 ;
}
} else {
self . elementData [++ _last ] = item;
}
} else {
self . capacity ++;
self . last ++;
[ self . elementData addObject :item];
}
}
-( NSObject *)dequeue
{
if (![ self isEmpty ]) {
NSObject *tmp = self . elementData [ _first ];
if ( _first == _last ){
_last = _first = - 1 ;
} else if ( _first == _capacity - 1 ){
_first = 0 ;
} else {
_first ++;
}
return tmp;
} else {
NSLog ( @"Fail :Queue is Empty" );
return nil ;
}
}