爱奇艺秋季校招iOS工程师(第二场)-2018年

一、单项选择题

1、下面哪些代码片段能实现如下功能:将一个 layer 设为透明,并在父 layer 中的层级更靠后( )
A、theLayer.opacity=0.0;theLayer.zPosition=0;
B、theLayer.opacity=0.0;theLayer.zPosition= -100;
C、theLayer.opacity=0.0;theLayer.zPosition=100;
D、theLayer.opacity=1.0;theLayer.zPosition=0;
2、下面哪个能正确定义一个 Objective-C 类( )
A、@class ClassName : ItsSuperclass { instance variable declarations } method declarations @end
B、@interface ClassName : ItsSuperclass { instance variable declarations } method declarations @end
C、@class ClassName : ItsSuperclass { instance variable declarations method declarations } @end
D、@implementation ClassName : ItsSuperclass { instance variable declarations } method declarations @end
3、下面关于线程管理错误的是( )
A、GCD所用的开销要比NSThread大
B、NSOperationQueue是比NSthread更高层的封装
C、可以在子线程中修改UI元素
D、GCD可以根据不同优先级分配线程
4、在设计模式中,应该优先使用_____关系从而实现复用( )
A、委派
B、继承
C、创建
D、都不对
5、哪个能获取到APP当前对外版本号( )
A、[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString”]
B、[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion”]
C、[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleInfoDictionaryVersion"]
6、假设以下代码可能存在循环引用情况,代码中的“关键字”应该替换为下面选项的哪一项可以防止循环引用( )
class HTMLElment {
    let name: String = "title"
    let text: String? = "myTitle"
    lazy var asHTML: () -> String = {
        // text
        // Capture list
        [关键字 self] in
        if let text = self.text {
            return "<\(self.name)>\(text)</\(self.name)>"
        } else {
            return "<\(self.name)>"
        }
    }
}
A、assign
B、weak
C、unowned
D、strong
7、Linux下哪个命令可以用于判断host1主机是否能够访问host2主机的端口( )
A、ping
B、ifconfig
C、telnet
D、netstat
8、有一个算法的递推关系式为:T(n) = 9 T(n / 3) + n,则该算法的时间复杂度为( )
A、O(n^3)
B、O(nlogn)
C、O(n)
D、O(n^2)
9、由下面5个点:1,1,2,3,5构成的哈夫曼树的带权路径长度为( )
A、23
B、24
C、25
D、26
10、Linux系统下,用什么命令来查看系统进程( )
A、df
B、ifconfig
C、netstat
D、ps

二、编程题

1、牛牛参加了一场考试,考试包括n道判断题,每做对一道题获得1分,牛牛考试前完全没有准备,所以考试只能看缘分了,牛牛在考试中一共猜测了t道题目的答案是"正确",其他的牛牛猜为"错误"。考试结束后牛牛知道实际上n道题中有a个题目的答案应该是"正确",但是牛牛不知道具体是哪些题目,牛牛希望你能帮助他计算可能获得的最高的考试分数是多少。
2、有一种有趣的字符串价值计算方式:统计字符串中每种字符出现的次数,然后求所有字符次数的平方和作为字符串的价值
例如: 字符串"abacaba",里面包括4个'a',2个'b',1个'c',于是这个字符串的价值为4 * 4 + 2 * 2 + 1 * 1 = 21
牛牛有一个字符串s,并且允许你从s中移除最多k个字符,你的目标是让得到的字符串的价值最小。
3、牛牛和羊羊都很喜欢青草。今天他们决定玩青草游戏。
最初有一个装有n份青草的箱子,牛牛和羊羊依次进行,牛牛先开始。在每个回合中,每个玩家必须吃一些箱子中的青草,所吃的青草份数必须是4的x次幂,比如1,4,16,64等等。不能在箱子中吃到有效份数青草的玩家落败。假定牛牛和羊羊都是按照最佳方法进行游戏,请输出胜利者的名字。

参考答案

一、
1~5:BBCAA
6~10:CCDCD
二、
1、
#include<iostream>
using namespace std;
int main(){
    int n,t,a;
    cin>>n;
    cin>>t;
    cin>>a;
    if(t<a)
        cout<<t+n-a;
    else if(t==a)
        cout<<n;
    else
        cout<<n+a-t;   
    return 0;
}
2、
#include <iostream>
#include <string>
#include <queue>
using namespace std;
   
int solve(string s, int k){
    int count[26] = { 0 };
    for (int i = 0; i < s.size(); i++){
        count[s[i] - 'a']++;
    }
    priority_queue<int> q(count, count + 26);
    while (k--){
        int temp = q.top();
        q.pop();
        temp--;
        q.push(temp);
    }
    int result = 0;
    while (!q.empty()){
        int num = q.top();
        q.pop();
        result += num*num;
    }
    return result;
}
   
int main(){
    string s;
    int k;
    while (cin >> s >> k){
        if (s.size() <= k){
            cout << 0 << endl;
            continue;
        }
        cout << solve(s, k) << endl;
    }
    return 0;
}
3、
#include<stdio.h>
int dp[10],n,x,i,j;
int main(){
    for(i=1;i<10;i++){
        int flag=0;
        for(j=1;j<=i;j*=4)
            if(dp[i-j]==0) flag=1;
        dp[i]=flag;
    }
    for(scanf("%d",&n),i=0;i<n;i++)
        scanf("%d",&x),printf("%s\n",dp[x%10]?"niu":"yang");
}
个人资料
Bingo
等级:9
文章:694篇
访问:38.9w
排名: 1
上一篇: 爱奇艺秋季校招iOS工程师(第一场)-2018年
下一篇:爱奇艺秋季校招iOS工程师(第三场)-2018年
猜你感兴趣的圈子:
爱奇艺笔试面试圈
标签: thelayer、declarations、牛牛、青草、考试、面试题
隐藏