当前位置:   article > 正文

江苏电信2020IT技术岗上机考试题_中国电信机试编程考些什么

中国电信机试编程考些什么

2019年8月31日下午,在南京,江苏电信组织之前全省的暑期实习生进行提前批选拔,这里就总结一下机试的三道大题:
先谈一谈做题目的感受,题目都不是很难,之前也有遇到过,但让人很难受的是,从算法函数到调用函数都需要自己写(和LeetCode和牛客只写方法函数不太一样)。笔者看到题目时都慌乱,界面一行代码都没有,全部手输,也不知道要写到啥程度。于是硬着头皮先写方法函数,写完就运行了一下,期望能有奇迹发生,结果是不行,就又写了主函数调用,外面也注明了类,然后跟着报错信息慢慢改,结果给调试出来了,一定要看报错信息,在不知道格式的情况下非常有用。后来才知道在进入考试前可以先阅读《查看编程须知》这里挂上网站https://qy.oxcoder.com.cn/program-help.html。笔者用的是Java,里面普通的方法,在平时IDE中代码提示时写代码很爽,考试时是没有代码提示的(这个到有心理准备,但还是准备不充分)。于是就出现了平时一个函数解决的问题,需要手动写好几行自己实现。平时用到很多的数组、List、字符串、Math等里的方法要非常熟悉。
1、题目大致思想是十进制数转十六进制数

public class Test1 {
	public static String intToHex(int n){
		StringBuilder sb = new StringBuilder();
		String s = "0123456789abcdef";
		if(n<16){
			return String.valueOf(s.charAt(n));
		}
		while(n>=16){
			int temp = n%16;
			n = n/16;
			sb.append(s.charAt(temp));
		}
		sb.append(s.charAt(n));
		return sb.reverse().toString();
	}
	public static void main(String[] args) {
		int n = 155;
		System.out.println(intToHex(n));
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2、题目大致思想是数组排序,输出元素位置改变数的最小值。想着用sort函数排序,再判断变化的位置,但输入规定是用空格分隔的字符串,所以还要加一步字符串的分割与类型转换。

import java.util.Arrays;
public class Test2 {
	public static int sortn(int n, String s){
		String[] ss = s.split(" ");
		int stoi[] = new int[n];
		for(int i=0; i<n; i++){
			stoi[i] = Integer.parseInt(ss[i]);
		}
		int stoisort[] = Arrays.copyOf(stoi, n);//不能用int stoisort[] = stoi,只是引用的变化,实际都指向stoi。
		Arrays.sort(stoisort);
		int count = 0;
		for(int i=0; i<n; i++){
			if(stoi[i] != stoisort[i]){
				count++;
			}
		}
		return count;
	}
	public static void main(String[] args) {
		int n = 6;
		String s = "7 6 8 10 5 9";
		System.out.println(sortn(n, s));
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

3、把一根绳子剪成多段,使每段的乘积最大。
解题思路,尽可能多的3,不能再分出3了,就剩2,剩余为4时,分出两个2.下面给出三种方法

public class Test3 {
	public static int breakLength(int n){
		if(n<=4){return n;}
		int count1 = n/3;
		if(n-count1*3 == 1){count1--;}
		int count2 = (n-count1*3)/2;
		return (int)((Math.pow(3, count1))*(Math.pow(2, count2)));
	}
	//动态规划
	public static int DynamicbreakLength(int n){
		int dbl[] = new int[n+1];
		dbl[1] = 1;
		for(int i=0; i<=n; i++){
			for(int j=0; j<i; j++){
				dbl[i] = Math.max(dbl[i], Math.max(j*(i-j), dbl[j]*(i-j)));
			}
		}
		return dbl[n];
	}
	//递归
	public static int devide(int n){
		if(n<=4){
			return n;
		}else{
			return 3*devide(n-3);
		}
	}
	public static void main(String[] args) {
		int n = 19;
		System.out.println("n result is"+breakLength(n));
		System.out.println("n result is"+DynamicbreakLength(n));
		System.out.println("n result is"+devide(n));
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/134383
推荐阅读
相关标签
  

闽ICP备14008679号