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

一、单项选择题

1、Objective-C中实例变量默认的访问修饰符是( )
A、@protected
B、@private
C、@public
D、@package
2、以下哪项不是AFNetworking验证证书模式( )
A、AFSSLPinningModeNone
B、AFSSLPinningModePublicKey
C、AFSSLPinningModePrivateKey
D、AFSSLPinningModeCertificate
3、以下哪个不是iOS的网络请求三方库( )
A、AFNetworking
B、Alamofire
C、ASIHttpRequest
D、MJRefresh
4、在iOS中如何给一个UIView添加点击事件( )
A、为该view添加onClick()事件
B、为该view添加UITapGestureRecognizer手势
C、使用-(void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents方法实现TouchUpInside的监听
D、UIView无法监听到点击事件
5、对于语句UIImageView *img = [[UIImage alloc] init]; img在编译时和运行时分别时什么类型的对象( )
A、编译时是UIImageView的类型;运行时是UIImage类型的对象
B、编译时是UIImage的类型;运行时是UIImageView类型的对象
C、编译时是UIImageView的类型;运行时是UIImageView类型的对象
D、编译时是UIImage的类型;运行时是UIImage类型的对象
6、以下哪种排序算法在最坏情况下的时间复杂度最小( )
A、冒泡排序
B、选择排序
C、归并排序
D、插入排序
7、两台主机A和B已建立了TCP连接,A始终以MSS=1KB大小的段发送数据,并一直有数据发送;B每收到一个数据段都会发出一个接收窗口为9KB的确认段。
若A在T时刻发生超时时拥塞窗口为8KB,则从T时刻起,不再发生超时的情况下,经过10个RTT后,A的发送窗口是 ( )
A、8KB
B、9KB
C、10KB
D、11KB
8、设栈S初始状态为空。元素1,2,3,4,5,6依次通过栈S,若出栈的顺序为4,6,5,3,2,1,则栈S的容量至少应该为( )
A、3
B、4
C、5
D、6
9、在Linux系统下,下列哪个命令可以查看曾经登录到此系统的用户清单( )
A、ps
B、last
C、lastcomm
D、accton
10、在软件开发中,经典的模型就是瀑布模型,下列关于瀑布模型的说法正确的是( )
A、瀑布模型具由于良好的灵活性
B、瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开
C、瀑布模型的核心是按照软件开发的时间顺序将问题简化
D、利用瀑布模型,如果发现问题则修改的代价很低

二、编程题

1、牛牛有一个由小写字母组成的字符串s,在s中可能有一些字母重复出现。比如在"banana"中,字母'a'和字母'n'分别出现了三次和两次。
但是牛牛不喜欢重复。对于同一个字母,他只想保留第一次出现并删除掉后面出现的字母。请帮助牛牛完成对s的操作。
2、牛牛举办了一场数字游戏,有n个玩家参加这个游戏,游戏开始每个玩家选定一个数,然后将这个数写在纸上(十进制数,无前缀零),然后接下来对于每一个数字将其数位按照非递减顺序排列,得到新的数,新数的前缀零将被忽略。得到最大数字的玩家赢得这个游戏。
3、一个完整的括号字符串定义规则如下:
(1)、空字符串是完整的。
(2)、如果s是完整的字符串,那么(s)也是完整的。
(3)、如果s和t是完整的字符串,将它们连接起来形成的st也是完整的。
例如,"(()())", ""和"(())()"是完整的括号字符串,"())(", "()(" 和 ")"是不完整的括号字符串。
牛牛有一个括号字符串s,现在需要在其中任意位置尽量少地添加括号,将其转化为一个完整的括号字符串。请问牛牛至少需要添加多少个括号。

参考答案

一、
1~5:ACDBA
6~10:CBCBB
二、
1、
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
    string x,res="";
    map<char,int> book;
    int i;
    for(cin>>x,i=0;i<x.length();i++)
        if(!book.count(x[i])) res+=x[i],book[x[i]]=1;
    cout<<res;
}
2、
#include<stdio.h>
#include<algorithm>
int reOrder(int num){
    if(num<0) return 0;
    int* res=new int[10];
    int i=0;
    while(num){
        res[i++]=num%10;
        num=num/10;
    }
    std::sort(res,res+i);
    int j=0;
    int newNum=0;
    while(j<i){
        newNum=newNum*10+res[j++];
    }
    delete[] res;
    return newNum;
}
 
int main(){
    int n;
    scanf("%d",&n);
    int* data=new int[n];
    for(int i=0;i<n;++i){
        scanf("%d",data+i);
    }
     
    int maxNum=-1;
    for(int i=0;i<n;++i){
        int curNum=reOrder(data[i]);
        maxNum=std::max(maxNum,curNum);
    }
     
    printf("%d",maxNum);
}
3、
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
char s[100];
int dp[100][100],i,j,n,k;
int main(){
    scanf("%s",s),n=strlen(s);
    for(i=n-1;i>=0;i--)
        for(j=i;j<n;j++)
            if(i==j) dp[i][j]=1;
            else if(i+1==j){
                if(s[i]=='('&&s[j]==')') dp[i][j]=0;
                else dp[i][j]=2;
            }else{
                dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1;
                if(s[i]=='('&&s[j]==')')
                    dp[i][j]=min(dp[i][j],dp[i+1][j-1]);
                for(k=i;k<j;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]);
            }
    printf("%d\n",dp[0][n-1]);
}
个人资料
Bingo
等级:9
文章:694篇
访问:38.9w
排名: 1
上一篇: 爱奇艺秋季校招iOS工程师(第二场)-2018年
下一篇:爱奇艺秋季校招C++工程师(第一场)-2018年
猜你感兴趣的圈子:
爱奇艺笔试面试圈
标签: dp、res、瀑布、uiimageview、uiimage、面试题
隐藏