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

一、单项选择题

1、当控件中visibility这个属性设置下面哪种值时,界面不保留控件所占有的空间( )

A、VISIBLE

B、NONE

C、GONE

D、INVISIBLE

2、下面代码放在主线程中运行会引发ANR错误的选项是( )

A、Toast.makeText(getApplicationContext(),"hello world",Toast.LENGTH_LONG).show();

B、mHandler.postDelayed(new Runnable() {<br>@Override<br>public void run() {<br>Toast.makeText(getApplicationContext(),&quot;hello world&quot;,Toast.LENGTH_SHORT).show();<br>}<br>},5000);

C、LayoutInflater.from(context).inflate(R.layout.something_layout, null);

D、HttpURLConnection urlConn = (HttpURLConnection) new URL(&quot;https://www. iqiyi.com&quot;).openConnection();

3、自定义View有三个常用的重要的方法,以下选项中对执行顺序描述正确的是( )

A、onMeasure() --&gt; onDraw() --&gt; onLayout()

B、onLayout() --&gt; onMeasure() --&gt; onDraw()

C、onLayout() --&gt; onDraw() --&gt; onMeasure()

D、onMeasure() --&gt; onLayout() --&gt; onDraw()

4、定义如下程序:

public class Student{
   public String name;
   public Student(String name){
       this.name = name;
   }
}
public class Test implements Cloneable{
      public Student st;
        public static void main(String[] args){
             Student  s1 = new Student(“Tom”);
                Test t1 = new Test();
                t1.st = s1;
                Test t2 = (Test) t1.clone();
        }
}

以下表达式中值为true的是( )

A、t1 == t2

B、t1.equals(t2)

C、t1.st != t2.st

D、t1.st.equals(t2.st)

5、定义程序如下:

public class  A{
   public static void main(String args[]){
        int sum = 0;
        for(int i=0; i<20; i++){
          sum +=i;
          if(i%4 == 0){
               break;
          }
        }
        System.out.println(sum);
    }
}

输出结果为( )

A、0

B、210

C、10

D、50

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、牛牛有4根木棍,长度分别为a,b,c,d。羊羊家提供改变木棍长度的服务,如果牛牛支付一个硬币就可以让一根木棍的长度加一或者减一。牛牛需要用这四根木棍拼凑一个正方形出来,牛牛最少需要支付多少硬币才能让这四根木棍拼凑出正方形。

2、牛牛的老师给出了一个区间的定义:对于x ≤ y,[x, y]表示x到y之间(包括x和y)的所有连续整数集合。例如[3,3] = {3}, [4,7] = {4,5,6,7}.牛牛现在有一个长度为n的递增序列,牛牛想知道需要多少个区间并起来等于这个序列。

例如:

{1,2,3,4,5,6,7,8,9,10}最少只需要[1,10]这一个区间

{1,3,5,6,7}最少只需要[1,1],[3,3],[5,7]这三个区间

3、一个完整的括号字符串定义规则如下:

(1)、空字符串是完整的。

(2)、如果s是完整的字符串,那么(s)也是完整的。

(3)、如果s和t是完整的字符串,将它们连接起来形成的st也是完整的。

例如,"(()())", ""和"(())()"是完整的括号字符串,"())(", "()(" 和 ")"是不完整的括号字符串。

牛牛有一个括号字符串s,现在需要在其中任意位置尽量少地添加括号,将其转化为一个完整的括号字符串。请问牛牛至少需要添加多少个括号。


参考答案

一、

1~5:CDDDA

6~10:CBCBB

二、

1、

#include<iostream>
#include<algorithm>
 
using namespace std;
int temp;
int main()
{
    int a, b, c, d;
    int mean,result;
    cin >> a >> b >> c >> d;
    if (b > a)
    {
        temp = a;
        a = b;
        b = temp;
    }
    if (d > c)
    {
        temp = c;
        c =d;
        d = temp;
    }
    if (c> a)
    {
        temp = a;
        a = c;
        c = temp;
    }
    if (d > b)
    {
        temp = b;
        b = d;
        d = temp;
    }
    if ((d<(a + b + c)) && (a >(b + c + d)))
    {
        mean = (b + c)*1.0 / 2 + 0.5; 
    }
    else if (a > (b + c + d)){
        mean = (b + c + d)*1.0 / 3 + 0.5;
    }
    else{
        mean = (a + b + c + d)*1.0 / 4 + 0.5;
    }
    result = abs(a - mean) + abs(b - mean) + abs(c - mean) + abs(d - mean);
    cout << result;
    return 0;
     
}

2、

#include<stdio.h>
 
int main(){
    int k=0;
    int data[100];
    scanf("%d",&k);
    for(int i=0;i<k;++i){
        scanf("%d",data+i);
    }
     
    int count=0;
    if(k==1) printf("%d",1);
     
    for(int i=1;i<k;++i){
        if(data[i]!=data[i-1]+1)
            count++;
    }
    count++;
     
    printf("%d",count);
     
}

3、

#include <iostream>
#include <stack>
#include <string>
 
using namespace std;
 
int main(){
    stack<char> s;
    string str;
    cin>>str;
    int n=str.size();
    for(int i=0;i<n;++i){
        if(s.empty())
            s.push(str[i]);
        else if(s.top()=='('&&str[i]==')')
            s.pop();
        else
            s.push(str[i]);
    }
    cout<<s.size()<<endl;
     
    return 0;
}
个人资料
Bingo
等级:9
文章:694篇
访问:38.9w
排名: 1
上一篇: 爱奇艺秋季校招Android工程师(第二场)-2018年
下一篇:网易校园招聘编程题真题集合-2018年
猜你感兴趣的圈子:
爱奇艺笔试面试圈
标签: 牛牛、temp、st、quot、瀑布、面试题
隐藏