京东 20190413 Android实习机试

版权声明:本文为博主原创文章,转载请注明原博客地址 https://blog.csdn.net/qunqunstyle99/article/details/89290452

首先是三十道选择,涵盖了设计模式,数据库,操作系统,数据结构,计算机网络等等知识,涉及面很广很丰富,答的很不好,基础知识还差得很多。
举几个例子:

  • 文件目录data当前权限为rwx— ---,只需要增加用户组可读权限,但不允许写操作,具体方法为:A
    A chmod+040data
    B chmod+050data
    C chmod+005data
    D chmod+004data
  • Android手机安装的应用都是以apk形式来进行的,它实质上是个压缩包,在apk包中都没有包含的文件是:D
    A 开发过程中的各种资源文件
    B AndroidManifest.xml
    C 代码类文件包classes.dex
    D src下的.java文件
  • Anr产生时,系统会生成一个跟踪日志文件,文件是:B
    A data/log/traces.txt
    B data/anr/traces.txt
    C data/anr/log.txt
    D data/data/log.txt
  • linux系统下有多个文件目录,每个文件目录都有其独特的功能和作用,以下描述正确的是:不知道
    A /boot:系统启动时要用到的所有系统文件
    B /usr: 是文件系统的第二个主要部分 ./usr是不可共享的只读文件
    C /bin 必要的用户二进制可执行文件(部分用户使用)
    D /etc 主机特定的系统配置
  • 后端获取数据,像前端输出的过程中,以下描述正确的是:不知道
    A 对于从用户上传的Excel等文件解析出的数据,属于可信数据,可以直接输出到前端界面
    B 其它选项都不属于可信数据,输出前应该采用信息安全部发布的XSSFilter进行相应的编码
    C 对于从数据库中获得的数据,属于可信数据,可以直接输出到前端页面
    D 对于前端过滤过的参数,属于可信数据,可以直接输出到前端页面
  • JVM不包含如下哪个部分:C
    A stacks
    B Heap
    C Heap Frame
    D PC寄存器
  • HTTP1.1的请求方式不包括:B
    A DELETE
    B POLL
    C PUT
    D TRACE
  • 关于参数处理,不正确的是:C
    A $?显示最后命令的退出状态
    B $$脚本运行的当前进程ID号
    C $!后台运行的第一个进程ID号 正确答案(后台运行的最后一个进程的进程ID号
    D $#表示传递到脚本的参数个数

在这里插入图片描述

在这里插入图片描述


编程题:

然后是两道编程题,第一道题目一开始以为是贪心算法的题目,还有点懵,后来仔细读题,发现并不难,第二道题目干脆没有看明白。不知道思路,没有办法,知道安心的做第一个题了。结果第一个题也有几个点被疏忽了,没有找到,没有AC掉。

题目一:

一个人做黑暗料理,需要n中原材料,有一个V大小的容器用来盛放料理。然后n种原材料的使用比例是
A1 A2 A3 A4 A5。。。。An ,每种原材料的数量是B1 B2 B3 B4 B5。。。。Bn
求出可以配置的最多的黑暗料理是多少?

输入:
输入第一行 : 两个正整数 n 和 V ,表示原料种类数和容器容积。(1<=n<=1000,1<=V<=1000000)
输入第二行包含n个数A1 A2 A3 A4 A5。。。。An 表示n种原料的配比
输入第三行包含n个数B1 B2 B3 B4 B5。。。。Bn 表示n种原料的拥有数量
(数字间以空格隔开)
输出:
输出一个非负数,表示最多可以制作多少饮料,结果保留四位小数。

样例输入11 100
1
40
样例输出140.0000

样例输入22 100
1 1
60 60 
样例输出2100.0000

分析:
配比是一定的,所以说每一样都必须要使用,所以,根据木桶的短板原理,最短的木板决定了桶的盛水量,我们可以找到等比例原料数最少的原料,用它的每单位数量来乘上所有的原料比例累加之和,这样若是大于V,则最大制作V容量的黑暗料理,若是小于V,则最多制造最短的木板多决定的黑暗料理数。

//不知道有啥点没有分析到,只过了72%
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String []args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int V = in.nextInt();
		Cailiao cailiao [] =new Cailiao[n];//拼音命名实在是尴尬,大家不要学我

		for (int i = 0; i < n; i++) {
			cailiao[i] = new Cailiao();
			cailiao[i].name = in.nextFloat();
		}
		for (int i = 0; i < n; i++) {
			cailiao[i].value = in.nextFloat();
			cailiao[i].temp = cailiao[i].value/cailiao[i].name;//存储每个原材料的权重
		}
		
		Arrays.sort(cailiao);
		float count = 0.0f;
		for (int i = 0;i<n;i++) {
			count+=cailiao[0].temp*cailiao[i].name;//按照最小的那个值来累加计算
		}
		if(count>V)
			System.out.print(""+V+".0000");
		else {
			System.out.print(String.format("%1.4f", count));
		}		
	}
	

}
class Cailiao implements Comparable<Cailiao> {
	float  name;
	float  value;
	float  temp;//权重	
	
	@Override
	public int compareTo(Cailiao o) {//定义数组的比较方法
		// TODO Auto-generated method stub
		return (int)(this.temp-o.temp);
	}
}

题目二:

有序图
现在给出一张含有 n 个点的有向无环图,我们称这张图是“有序图”,当且仅当这个图满足以下条件:

  1. 存在一个 1-n 数字的全排列 P ,并令i号结点的权值为 P[i]。
  2. 如果图中存在 u 号结点到 v 号结点的一条边,则 u 号结点的权值要小于 v 号结点的权值。
    显然有可能有多个序列满足条件,请你找出字典序最小的全排列 P,使得这个图成为有序图。

输入:
第一行包含两个正整数 n ,m,分别表示图上结点的数量和邮箱边的数量。(1 <= n,m <= 100000)
接下来的 m 行每行有两个正整数 u,v,表示存在一条从 u 结点到 v 结点的有向边。
输出:
输出一个字典序最小的, 1-n 的全排列,使得这张图是有序图,元素中间使用空格隔开。

样例输入13 3
1 2
1 3
3 2
样例输出11 3 2


样例输入24 5
3 1
4 1
2 3
3 4
2 4
样例输出24 1 2 3

这个题目没有看懂,后面和师兄讨论也没明白,先码一下,求大神指导分析一下。

猜你喜欢

转载自blog.csdn.net/qunqunstyle99/article/details/89290452
今日推荐