一、单项选择题
1、下面哪些选项与Objective-C的内存管理无关( )
A、alloc
B、mutableCopy
C、delete
D、release
2、下面不属于ios多线程实现方法的是( )
A、使用@synchronized(self)
B、使用GCD
C、使用NSOperationQueue
D、使用@NSTheard
3、一个提供NAT服务的路由器在转发一个源IP地址为10.0.0.1、目的IP地址为131.12.1.1的IP分组时,可能重写的IP分组首部字段是( )
Ⅰ.TTL
Ⅱ.片偏移量
Ⅲ.源IP地址
Ⅳ.目的IP地址
A、仅Ⅰ
B、仅I、Ⅱ
C、仅Ⅰ、Ⅱ、III
D、Ⅰ、Ⅱ、Ⅲ、Ⅳ
4、查看系统内存如下:
[@server ~]# free -g
total used free shared buffers cached
Mem: 15 5 9 0 0 2
-/+ buffers/cache: 3 12
Swap: 0 0 0
那么程序实际可使用内存有多少( )
A、9G
B、11G
C、12G
D、21G
5、xib上使用autolayout设置了一个按钮距离右边30像素,现需要用代码改成50像素,以下哪种方法符合需求( )
A、[self.btn setOrigin:CGPointMake(self.btn.origin.x - 20, self.btn.origin.y)];
B、把btn的距离右边约束拖到代码中,然后设置约束 self.btnRightGap.constant = 50;
C、[self.btn setCenter:CGPointMake(self.btn.center.x - 20, self.btn.center.y)];
D、把btn的距离右边约束拖到代码中,然后设置约束 self.btnRightGap.multiplier = 50;
6、声明一个返回值为NSDictionary,并且带参数的block正确的是( )
A、@property (nonatomic,strong) NSDictionary (*aBlock)(int age)
B、@property (nonatomic,strong) NSDictionary ^(*aBlock)(int age)
C、@property (nonatomic,strong) NSDictionary (^aBlock)(int age)
D、@property (nonatomic,strong) NSDictionary *(^aBlock)(int age)
7、苹果在WWDC17推出AR框架ARKit,关于ARKit以下说法错误的是( )
A、ARKit可以基于SpriktKit实现2D场景的增强现实
B、ARKit可以基于SceneKit实现3D场景的增强现实
C、苹果设备升级iOS11以上系统就可以使用ARKit
D、ARKit不能直接加载物体模型,只能依赖于游戏引擎加载物理模型
8、若前缀表达式为-+a*b-cd/ef,后缀表达式为abcd-*+ef/-,那么对应二叉树的中序遍历序列是( )
A、a+c*d-b-e/f
B、a+b*c-d-e/f
C、a+b*d-c-e/f
D、a+e*c-d-b/f
9、下面关于选择排序说法正确的是( )
A、每扫描一遍数组,需要多次交换
B、选择排序是稳定的排序方法,因为时间复杂度是固定的O(n^2)
C、选择排序排序速度一般要比冒泡排序快
D、选择排序排序速度一般要比冒泡排序快
10、在UML建模中,下列哪个UML的图一般用于描述软件系统的需求( )
A、状态图
B、协作图
C、用例图
D、顺序图
二、编程题
1、牛牛有羊羊有了属于他们自己的飞机。于是他们进行几次连续的飞行。f[i]表示第i次飞行所需的燃油的升数。飞行只能按照f数组所描述的顺序进行。
起初飞机里有s升燃油,为了正常飞行,每次飞行前飞机内燃油量应大于等于此处飞行所需要的燃油量。请帮助他们计算在不进行加油的情况下他们能进行的飞行次数。
2、对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020.
牛牛现在给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2, k2),请你来比较v1和v2的大小。
3、一个合法的括号匹配序列有以下定义:
(1)、空串""是一个合法的括号匹配序列
(2)、如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列
(3)、如果"X"是一个合法的括号匹配序列,那么"(X)"也是一个合法的括号匹配序列
(4)、每个合法的括号序列都可以由以上规则生成。
例如: "","()","()()","((()))"都是合法的括号序列
对于一个合法的括号序列我们又有以下定义它的深度:
(1)、空串""的深度是0
(2)、如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符串"XY"的深度为max(x,y) 3、如果"X"的深度是x,那么字符串"(X)"的深度是x+1
例如: "()()()"的深度是1,"((()))"的深度是3。牛牛现在给你一个合法的括号序列,需要你计算出其深度。
参考答案
一、
1~5:CACCB
6~10:DCBDC
二、
1、
#include <iostream>
using namespace std;
int main()
{
int n,t;
cin>>n>>t;
int *a=new int[n];
for(int i=0;i<n;i++)
cin>>a[i];
int d=0;
int j=0;
while(j<n)
{
d+=a[j];
if(d>t)
{
break;
}
j++;
}
cout<<j<<endl;
return 0;
}
2、
#include <iostream>
#include <string>
using namespace std;
long double repeat(int x, int k){
string xStr = to_string(x);
string oriStr = xStr;
for (int i = 0; i < k - 1; ++i) {
xStr.append(oriStr);
}
return stold(xStr);
}
int main(){
int x1 = 0,k1 = 0,x2 = 0,k2 = 0;
scanf("%d",&x1);
scanf("%d",&k1);
scanf("%d",&x2);
scanf("%d",&k2);
long double result1 = repeat(x1,k1);
long double result2 = repeat(x2,k2);
if (result1 == result2) printf("Equal");
else if (result1 < result2) printf("Less");
else if (result1 > result2) printf("Greater");
else printf("Error");
return 0;
}
3、
class Solution {
public:
int longestConsecutive(vector<int> &num) {
unordered_set<int> s(num.begin(),num.end());
int res=1;
for(auto val:num)
{
if(s.find(val)==s.end())
continue;
s.erase(val);
int pre=val-1;
int post=val+1;
while(s.find(pre)!=s.end())
{
s.erase(pre--);
}
while(s.find(post)!=s.end())
{
s.erase(post++);
}
res=max(res,post-pre-1);
}
return res;
}
};