欢聚时代2018校招笔试题-Java开发/运维研发/数据挖掘

本文主要是介绍欢聚时代2018校招笔试题-Java开发/运维研发/数据挖掘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                   欢聚时代2018校招笔试题-Java开发

 

1.以下哪些是操作系统的名称?
A.Windows
B.Linux
C.Solaris
D.UNIX
答案:abcd
解析:solaris 是unix系统的衍生

2.关于进程和线程,以下哪些说明是错误的
A.无论多进程和多线程架构的程序,都可以做到利用CPU多核多线程的能力
B.Linux内核看来,进程只是一个资源分配单位,线程才是一个实际的执行体
C.某个进程fork出来的多个子进

程,它们的内存是共享的
D.多线程架构的调度开销要小于多进程架构,因此多线程性能会更好一些

答案:bcd
解析:
3.CPU的状态转换中,以下哪些是可能发生的
A.Running -> Waiting
B.Running -> Blocked
C.Blocked -> Waiting
D.Blocked -> Running

答案:abc
解析:



 

Java中内存模型中,Metaspace(即元空间,也叫方法区)是从哪个版本开始引入的?
A.Java 6
B.Java 7
C.Java 8
D.Java 9
答案:C
解析:

Java 8彻底将永久代移除出了HotSpot JVM,将其原有的数据迁移至Java Heap或Metaspace。

    在HotSpot JVM中,永久代中用于存放类和方法的元数据以及常量池,在Java中对应能通过反射获取到的数据,比如Class和Method。每当一个类初次被加载的时候,它的元数据都会放到永久代中。

永久代是有大小限制的,因此如果加载的类太多,很有可能导致永久代内存溢出,即 java.lang.OutOfMemoryError: PermGen 。为此我们不得不对虚拟机做调优

Java 8中永久代被移出HotSpot JVM的原因主要有两个:

1、由于Permanent Generation内存经常不够用或发生内存泄露,引发java.lang.OutOfMemoryError: PermGen (在Java Web开发中非常常见)。

2、移除Permanent Generation可以促进HotSpot JVM与JRockit VM的融合,因为JRockit没有永久代。

根据上面的各种原因,永久代最终被移除,方法区移至Metaspace,字符串常量移至Java Heap。

 

以下哪些关键字/类可以达到不同线程互斥访问的效果?

A.ReentrantLock
B.volatile
C.static
D.synchronized

答案:AD
解析:B锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量可能是修改前的值或不一致的值,这将引发许多严重问题。Volatile 变量具有 synchronized 的可见性特性。这就是说线程能够自动发现 volatile 变量的最新值。

以下描述中,哪些是完全正确的?
A.对象实例中的成员变量是线程安全的
B.方法内定义的变量是线程安全的
C.Singleton(单例)实例中的成员变量是线程安全的
D.volatile的变量是线程不安全的

答案:BD关于Java的语法,以下描述中哪些是正确的?A.一个类可以继承(extends)一个或多个父类
B.一个类可以实现(implements)一个或多个接口
C.一个接口可以继承(extends)一个或多个其它接口
D.一个接口以实现(implements)一个或多个其它接口
答案:bcList a = new ArrayList<______>();
下列哪些选项放在上面的<______>中是符合java语法的?
A.?
B.? extends Collection
C.LinkedList
D.DelayQueue
答案:cd
解析:非限制泛型不允许初始化假设某个类有两个成员变量a和b,类型为Integer,以下为某个类中的2个方法,哪些组合是线程安全的?
A. public int sum(){synchronized(this){return a+b;}}<br>public void set(int a, int b){synchronized(this){this.a=a;this.b=b;}}
B. public synchronized int sum(){return a+b;}<br>public synchronized void set(int a, int b){this.a=a;this.b=b;}
C. public int sum(){synchronized(this.a){return a+b;}}<br>public void set(int a, int b){synchronized(this.a){this.a=a;this.b=b;}}
D. public int sum(){synchronized(this.a){return a+b;}}<br>public void set(int a, int b){synchronized(this.b){this.a=a;this.b=b;}}答案:abWhich statement(s) is (are) true about threads?A. Threads created from the same class all finish together.
B. A thread can be created only by subclassing java.lang.Thread.
C. Invoking the suspend() method stops a thread so that it cannot be restarted.
D. JVM will exit when only daemon threads remains alive.答案:D

关于构造函数的描述下列说法正确的是
A.构造函数不能被重载
B.构造函数不能被覆盖
C.一个构造函数可以返回一个私有的或一个对象的引用
D.构造函数代码执行顺序时是从最远的祖先类到当前的类层级
答案:BD

以下哪些项可以让两个同名的方法实现合法的重载?

A.形式参数个数不同
B.返回值类型不同
C.形式参数类型不同
D.形式参数名称不同
答案:AC

浮点数的表示范围和精度取决于?
A.阶码的基数
B.阶码的位数
C.尾数的位数
D.阶码和尾数的比例
答案:bc
解析:浮点数所能表示的范围取决于阶码;精度取决于尾数。
 

以下哪些是补码的优点?
A.减法也可以按加法来处理
B.简化对应计算部分的硬件结构
C.可以区分+0和-0
D.编码空间比原码大
答案:abd
解析:补码的优点:

  • 可将减法变为加法,省去减法器;
  • 无符号数及带符号数的加法运算可以用同一电路完成;
  • 使用补码,修复了原码中0的符号(有 [+0] [-0] 之分)以及存在两个编码(0000 0000 和 1000 0000)的问题,而且还能够多表示一个最低数。

 

以下哪些属于Linux使用的进程间通信方式?
A.管道
B.共享内存
C.信号量
D.套接字

答案:abcd

有能力处理网络层协议的网络设备是?

A.路由器
B.集线器
C.硬件防火墙
D.中继器
答案:ac
解析:

第一层(物理层):中继器、集线器

第二层(数据链路层):交换机、网桥

第三层(网络层):路由器

以下哪些方法不属于HTTP协议的标准方法?

A.PUT
B.POST
C.QUERY
D.REMOVE
答案:cd

请选择出属于TCP协议或IP协议中的概念
A.TTL
B.MTU
C.MAC
D.ESTABLISTED
答案:abd

 

以下哪些属于关系型数据库或对应SQL中的概念?

CPA
INDEX
MapReduce
HAVING
答案:bd

 

请选择出属于Oracle HotSpot JDK自带的命令行工具

jstack
jvisualvm
jhat
jstat

答案:abcd

名称主要功能
jpsJVM Process Status Tool,显示指定系统内所有HotSpot虚拟机进程
jstatJVM Statistics Minitoring Tool,用于收集HotSpot虚拟机各方面的运行数据
jinfoConfiguration Info for Java,显示虚拟机配置信息
jmapMemory Map for Java,生成虚拟机的内存转储快照(heapdump)文件
jhatJVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果
jstackStack Trace for Java,显示虚拟机的线程快照

 

//请写出程序的输出内容:

 

public class Test {public static Integer divide(int i) throws Exception {Integer result = null;try{result = 9/i;System.out.print("A");} catch(Exception ex) {System.out.print("B");throw new Exception("C");} finally {System.out.print("D");}return result;}public static void main(String [] args) {try{System.out.print(divide(0));System.out.print("E");} catch(Exception ex) {System.out.print("F");}System.out.print("G");}
}

参考答案 
(1) BDFG



 

如图所示,在内网的机器192.168.1.1需要通过NAT方式访问外部的一个服务(地址为135.2.1.1,端口为80)。NAT处的外网地址为202.0.1.1,本次访问的NAT映射信息见图中的"NAT地址转换表"。请按图中1的形式写出图中2,3,4中的的对应信息,注意同时按1中形式注明端口号。 1 2 3 【注意:S和D间用空格分割】
 

参考答案 
(1) S=202.0.1.1,5001 D=135.2.1.1,80
(2) S=135.2.1.1,80 D=202.0.1.1,5001
(3) S=135.2.1.1,80 D=192.168.1.1,3342


 

如上的数据库表设计,请填写以下的空白:


CREATE TABLE depositor (
customer_name char(20), 
account_number char(10),
PRIMARY KEY 1 )

SELECT D.customer_name, SUM(A.balance) FROM depositor AS D, account AS A
WHERE 2 GROUP BY 3 

参考答案 
(1) customer_name, account_number 或 account_number, customer_name
(2) D.account_number = A.account_number 或 A.account_number = D.account_number
(3) D.customer_name 或 customer_name

有一棵树的构造如图所示,请写出它的先根序遍历结果 1 和后根序遍历结果 2 。



 

你的答案 (正确)

1 FBADCEGIH

2 ACEDBHIGF

在工作中经常需要计算一些字符串出现的次数,请写一个字符串计数的工具类,它需要实现下面的接口。注意这个类需要支持高并发的情况下使用。

 

pulic interface Counter {

    // 获取一个字符串的出现次数

    int get(String str);

    // 增加一个字符串的出现次数

    void add(String str);

}


解析:

) 本题主要考察学生的基本编程能力。和对并发程序的了解。

2) 关注点一:基本语法:即是否可以写出基本符合语法的程序。如:基本的命名规范,定义中使用正确的关键词,类方法需要为public的等

3) 关注点二:基本功能:即是否可以实现题目的要求,如查询时如果字符串不存在,需要返回0 (因为接口要求返回是int),增加时需要处理还没有添加过的情况等。

4) 关注点三:并发使用:即在高并发情况下,需要使用合理的数据结构,如ConcurrentHashMap,AtomicInteger等。

5) 满分或接近满分的情况,要求给出的方案正确且支持高并发下的使用。

6) 如果无法支持高并发使用,则即使程序正确,也建议最多给2/3的分数。

7) 其它情况请酌情给分。

import java.util.Scanner;
import java.util.concurrent.ConcurrentHashMap;import org.omg.CosNaming.NamingContextExtPackage.AddressHelper;public class Main implements Counter {static ConcurrentHashMap<String, Integer> concurrentHashMap ;public static void main(String [] args){Scanner in = new Scanner(System.in);concurrentHashMap = new  ConcurrentHashMap<>();String tempString =""; while(in.hasNext()) {tempString = in.next();Main main = new Main();main.add(tempString);System.out.println(main.get(tempString));}}@Overridepublic int get(String str) {return concurrentHashMap.get(str);}@Overridepublic void add(String str) {if(concurrentHashMap.containsKey(str)) {concurrentHashMap.put(str, concurrentHashMap.get(str) + 1);}else {concurrentHashMap.put(str, 1);}}
}interface Counter {// 获取一个字符串的出现次数int get(String str);// 增加一个字符串的出现次数void add(String str);
}




给定一个整型数组a (int[]),包含N个元素。判断是否这N个整数可以构造出一个 "按位与等式",即是否存在这样一个等式:将数组中的任意N-1个整数进行按位求与操作(即Java中的"&"操作),得到的结果等于剩下的那个整数,注意这N个整数在等式中均必须出现且只出现一次。举例一:给定一个数组[5,20,4],结果为:true,因为 "20 & 5 = 4"。举例二:[5,3,7,19],结果为:false,因为数组中任何三个整数按位取与,均无法等于剩下的那个整数。请按如下函数定义,写出你的程序。(注:不能使用本地IDE)

boolean isAndEqationExist(int[] a);

注:
1) 保证正确性的同时,请考虑复杂度,复杂度越低,得分越高。
2) 可以定义其它的一些辅助函数以改进程序的可读性。
 

参考答案

1) 本题主要考察学生的分析能力和编程能力。

2) 问题分析中,一个重要的点是,等号右边的数字的特征:因为是求与的结果,所以必然是最小的数字。如果能分析到这个点,则只需要一次求与的尝试,即可得出结论。

3) 满分或接近满分的情况,要求给出的方案时间和空间复杂度均为O(1)且程序基本正确。

4) 因为题目强调了复杂度,如果方案是暴力的方式,即使程序基本正确,则建议最多给2/3的分数。

5) 其它情况请酌情给分。


给定任意一个非空字符串,请编程回答存在多少种如下组合式的情况:"S1 + C1 + S2 + C2 + S3"。其中S1/S2/S3为任意非空字符串(三者可以相同也可以不同),C1/C2为任意字符,且C1=C2。举例一:字符串"duowan"存在0种。举例二:字符串"duowanisgood"存在2种:"du + o + wanisg + o + od"和"du + o + wanisgo + o + d"。请按如下函数定义编程:

public int compositionCount(String str);

注:
1) 保证正确性的同时,请考虑复杂度,时间复杂度越低,得分越高。

2) 可以定义其它的一些辅助函数以改进程序的可读性。

 

public static int compositionCount(String str) {Map<Character, Integer> counts = new HashMap<Character, Integer>();Map<Character, Integer> reduce = new HashMap<Character, Integer>();// 步骤一:截头去尾,因开头和结尾字符不可能是合法的情况String strToCheck = str.substring(1, str.length() -1);// 步骤二:遍历字符串,计算字符的重复次数,并记录连续相同字符的次数Character last = null;for(Character c : strToCheck.toCharArray()) {counts.put(c, counts.getOrDefault(c, 0) + 1);if(last == c) {reduce.put(c, reduce.getOrDefault(c, 0) + 1);}last = c;}// 步骤三:计算结果int result = 0;for(Character c : counts.keySet()) {if(counts.get(c) < 2) {continue; // 字符无重复,无需计算}// 结果是一个"数学组合"的计算result += combination(counts.get(c), 2);// 需要减去连续出现符的情况result -= reduce.getOrDefault(c, 0);}return result;
}public static int combination(int n, int r) {// 计算"数学组合":C(r,n) = n! / (r! * (n-r)!)return factorial(n) / (factorial(r) * factorial(n - r));
}public static int factorial(int n) {// 计算阶乘if (n < 1) {return 1;}return n * factorial(n - 1);
}

参考解析:

1) 本题主要考察学生的分析能力和编程能力。

2) 问题分析中,一个重要的点是,因为C1与C2必须相同,故可以遍历整个字符串,算出每个字符的出现次数,然后根据出现次数直接算出最终的结果。同时有一些需要注意的细节:A) 由于S1/S2/S3均需要非空,故两个连续相同的字符无法组成一个合法的情况,需要额外处理(额外减1)。B) 开头和结尾的字符由于前/后没有字符了,故也不应该纳入计算。

3) 满分或接近满分的情况,要求给出的方案复杂度为O(1)且程序基本正确。同时考虑到了细节。

4) 因为题目中强调了时间复杂度,如果方案是暴力的方式,即使程序基本正确,则建议最多给2/3的分数。

6) 其它情况请酌情给分。
 

这篇关于欢聚时代2018校招笔试题-Java开发/运维研发/数据挖掘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443247

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD