蘑菇街2015校招 Java研发笔试题 详解
1. 对进程和线程描述正确的是( )
A. 父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间。
B. 改变进程里面主线程的状态会影响其他线程的行为,改变父进程的状态不会影响其他子进程。
C. 多线程会引起死锁,多进程则不会。
D. 以上都不对。
解析:A错,进程拥有独立的地址空间;B错,主线程和子线程是并行关系的时候,并没有依赖关系。父进程和子进程中,子进程是父进程的一个副本,创建子进程后,子进程会有自己的空间,然后把父进程的数据拷贝到子进程的空间里。运行时,谁先运行是不确定的,这由系统决定;C错,多线程和多进程都会引起死锁,一般说的死锁指的是进程间的死锁。
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。
2. 数据库里面建索引的常用数据结构是()
A.单向链表 B.栈 C.B+树 D.队列
解析:索引是对记录按照多个字段进行排序的一种方式。对表中的某个字段建立索引会创建另一种数据结构,其中保存着字段的值,每个值又指向与它相关的记录。这种索引的数据结构是经过排序的,因而可以对其执行二分查找。索引的缺点是占用额外的磁盘空间。因为索引保存在数据库中,所以如果为同一个表中的很多字段都建立索引,那这个文件可能会很快膨胀到文件系统规定的上限。
在数据库系统的使用过程当中,数据的查询是使用最频繁的一种数据操作。最基本的查询算法当然是顺序查找(linear search),遍历表然后逐行匹配行值是否等于待查找的关键字,其时间复杂度为O(n)。但时间复杂度为O(n)的算法规模小的表,负载轻的数据库,也能有好的性能。 但是数据增大的时候,时间复杂度为O(n)的算法显然是糟糕的,性能就很快下降了。好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之上,例如二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树上,但是数据本身的组织结构不可能完全满足各种数据结构(例如,理论上不可能同时将两列都按顺序进行组织),所以,在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。索引是对数据库表中一个或多个列的值进行排序的结构。与在表中搜索所有的行相比,索引用指针指向存储在表中指定列的数据值,然后根据指定的次序排列这些指针,有助于更快地获取信息。通常情 况下,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引将占用磁盘空间,并且影响数据更新的速度。但是在多数情况下,索引所带来的数据检索速度优势大大超过它的不足之处。目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构。
3. 蘑菇街公司里面随便找四名员工。那么这四名员工里面,至少有两个人的生肖是相同的概率是()
A.41/96 B.55/96 C.72/128 D.90/128
解析:P(A)=1-12*11*10*9/12^4=41/96。
4. 蘑菇街是一家拥有500名员工的年轻富有活力的公司,小侠们(男性员工)诚实可靠,只说真话。而小仙们(女性员工)调皮可爱,只说假话。某一天一位客户来公司参观,就问公司的员工,你们公司有几个小仙呀?公司的员工们很热心的一一做了回答,第一个员工说一个,第二个员工说二个...第五百个员工说五百个。请问蘑菇街到底有几个小仙?
A.1 B.250 C.499 D.500
解析:首先,只可能有一个员工说的对,其他都说的是错的,不可能两个人都说的对。那么男的只有一个,剩下的499都是女的。
5. IP地址131.53.12.71是一个()类IP地址?
A.A B.B C.C D.D
解析:A类网络的IP地址范围为1.0.0.1-127.255.255.254;B类网络的IP地址范围为:128.1.0.1-191.255.255.254;C类网络的IP地址范围为:192.0.1.1-223.255.255.254。由于A类地址的特点是网络标识的第一位二进制数取值必须为“0”。所以网段号到127,后面是具体的主机号的分配。
6. 如果某系统12*5=104成立,则系统采用的是()进制?
A.6 B.7 C.8 D.9
7. 编程实现一个函数,输入为一个给定的由英文单词组成的字符串,按照英文单词的顺序反转输出。例如,给定的字符串是"hi welcome to mogujie", 那么输出为"mogujie to welcome hi"?
public class InterruptString {
public static void main (String args[]){
String str = "hi welcome to mogujie";
for(int i = inverse(str).length - 1; i >= 0 ; i--){
System.out.print( inverse(str)[i]+" ");
}
} public static String[] inverse(String str){
String strArray[] = str.split(" ");
return strArray;
}
}
8. 输入一个整型数组,数组里面有正数也有负数,数组中连续的一个或多个整数组成子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如,输入的数字为:1,-2,3,10,-4,7,2,-5,则和最大的子数组为3,10,-4,7,2.和为18.
public class SonArray {
public static void main(String args[]){
Integer[] arrayIntegers = {1,-2,3,10,-4,7,2,-5};
String[] str = sonArray(arrayIntegers).split(" ");
System.out.println("The Big Sum is:" + str[0]);
}
static String sonArray(Integer[] array){
int sum = 0, max = 0;
for(int i = 0; i < array.length; i++){
sum += array[i];
if(sum < 0){
sum = 0;
}
max = sum > max?sum:max;
}
return max+" ";
}
}
9. 给定一串字符串(英文段落),用户输入某个单词,求该单词出现的总次数,和出现在第几个位置上。
// Java语言是先编译后执行
import java.util.ArrayList;
public class DivString {
public static void main(String args[]){
String str = "i love china i china china love love love xu";
String strArray[] = str.split(str);
ArrayList<String> arrayList = new ArrayList<String>();
for(int i = 0; i < strArray.length; i++){
if(strArray[i])
arrayList.add(strArray[i]);
}
}
}
10. 简述mysql数据库的锁机制
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。
悲观锁和乐观锁:悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。但如果经常产生冲突,上层应用会不断的进行retry,这样反倒是降低了性能,所以这种情况下用悲观锁就比较合适。
11. 两个超出内存表示的十分大的数之和的算法,以及大数阶乘的解决方案?
先来说说数,在计算机中,数是存贮在内存(RAM)中的。在内存中存储一个数有两类格式,定点数和浮点数。定点数可以精确地表示一个整数,但数的范围相对较小,如一个32比特的无符号整数可表示0-4294967295之间的数。浮点数能表示更大的范围,但精度较低。当表示的整数很大的,则可能存在误差。一个8字节的双精度浮点数可表示2.22*10^-308到 1.79*10^308之间的数,可精确到15-16位数字.
大尾序和小尾序,我们在书写一个数时,总是先写权较大的数字,后写权较小的数字。但计算机中的数并不总是按这个顺序存放。小尾(Little Endian)就是低位字节排放在内存的低端,高位字节排放在内存的高端。例如对于一个4字节的整数0x12345678,将在内存中按照如下顺序排放, Intel处理器大多数使用小尾(Little Endian)字节序。
大数超出了计算机的整形表示范围,故一般用字符串记录,两个大数相加就不能简单的用“+”进行运算,得绕个弯。先把字符串转成int数组(借助与字符'0'的差来实现),每位都放在数组中,然后对数组进行按位加。
12. 什么是ICMP协议?
ICMP(Internet Control Message Protocol)协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。ICMP就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。
ICMP是:Internet 控制信息协议(ICMP)是 IP 组的一个整合部分。通过 IP 包传送的 ICMP 信息主要用于涉及网络操作或错误操作的不可达信息。 ICMP 包发送是不可靠的,所以主机不能依靠接收 ICMP 包解决任何网络问题。ICMP不象TCP或UDP有端口,但它确实含有两个域:类型(type)和代码(code)。而且这些域的作用和端口也完全不同。Ping用到的是ICMP协议。不是端口。
13. 一台刚刚接入互联网的WEB服务器第一次被访问到时,不同协议的发生顺序是下面中的____。
A: ARP -> DNS -> HTTP 之所以有arp是要经过路由器,路由器是下三层的协议交互
B: ARP -> HTTP -> DNS
C: DNS -> HTTP -> ARP
D: DNS -> ARP -> HTTP
解题思路:DNS是用于把域名转为IP地址,ARP协议是IP地址向物理地址转,HTTP超文本传输协议应用于应用层。一台刚刚接入的互联网的web服务器首次访问。可以推测任何客户端都没有dns缓存,不直接通过ip访问的话,那么从客户端发起请求则dns~http~ip~arp~中间节点~arp~服务器~服务器ip~http。 有关的顺序dns~http~arp~http。
14. 合并两个有序数组,假设第一个数组空间足够容纳两个数组。 (要求高效率)
考虑到a数组很大,可以直接在a数组上进行合并,但是要讲究效率。如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要不停的移动。换一种思路,我们采用从后往前合并,首先计算出总长度,设置一个指针从a数组最后往前移动。
总结:字符串合并时,我们更应该考虑从后往前这种思路。
15. java不支持全局变量,java中的所有的变量必须在类中或者接口中,如果想要实现全局变量的功能,可以专门设置一个类里面包含一些静态变量。java"垃圾回收" System.gc();是单线程的,建议最好不要使用,如果你的应用程序处理业务很多且是多线程的话,最好不要使用gc(),一般在编程中尽量不要使用全局变量,应该尽可能的提供一些方法出来,如:get,set。垃圾收集只在下面两种条件下运行:有回收对象,并且需要回收这些对象。java运行期系统只有在需要时才进行垃圾收集。所以你并不知道垃圾收集发生的准确时间。另外可以调用System.gc()和Runtime.getRuntime().gc()方法来进行垃圾收集。static变量实质上相当于全局变量。但是枚举就可以用全局变量了,因为枚举对程序没有什么影响。
蘑菇街2015校招 Java研发笔试题 详解的更多相关文章
- Java基础知识面试题详解(2019年)
文章目录 1. 面向对象和面向过程的区别 2. Java 语言有哪些特点? 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 JVM JDK 和 JRE 4. Oracle JDK 和 Ope ...
- Java工程师笔试题整理[校招篇]
Java工程师笔试题整理[校招篇] 隔着两个月即将开始校招了.你是不是也想借着这个机会崭露头角,拿到某些大厂的offer,赢取白富美.走上人生巅峰?当然如果你还没能打下Java基础,一定要先打 ...
- 《Java面试全解析》505道面试题详解
<Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...
- 剑指Offer——网易校招内推笔试题+模拟题知识点总结
剑指Offer--网易校招内推笔试题+模拟题知识点总结 前言 2016.8.2 19:00网易校招内推笔试开始进行.前天晚上利用大约1小时时间完成了测评(这个必须做,关切到你能否参与面试).上午利用2 ...
- 备战金九银十,Java研发面试题(Spring、MySQL、JVM、Mybatis、Redis、Tomcat)[带答案],刷起来!
八月在即,马上就是"金九银十",又是跳槽招聘季.咱们这行公认涨薪不如跳槽加的快.但不建议频繁跳槽,还是要学会融合团队,抓住每个机会提升技能. 苏先生在这里给大家整理了一套各大互联网 ...
- 非常全面的java基础笔试题
下面是java基础笔试题,当时我去笔试,做了1个小时(80道选择题,后面的简答题就没时间做了),结果很吓人,太挫了,最后被面试官忽悠去培训去了,呵呵.我偷偷把面试题弄了下来,用来学习吧,也希望能对你们 ...
- js+html+css简单的互动功能页面(2015知道几乎尖笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2
js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html? from=y1.7-1. ...
- 2015小米暑期实习笔试题_风口的猪-中国牛市(dp)
风口之下.猪都能飞.当今中国股市牛市,真可谓"错过等七年". 给你一个回想历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i] ...
- Java 面试/笔试题神整理 [Java web and android]
Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...
随机推荐
- iOS----Asset Catalog的用法
文/余书懿(简书作者)原文链接:http://www.jianshu.com/p/7aa06ce22a7b著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 引言 Asset Catalo ...
- java更改数据库中的数据
不废话,上代码 package com.ningmeng; import java.sql.*; /** * 1:更改数据库中的数据 * @author biexiansheng * */ publi ...
- WPF入门教程系列十一——依赖属性(一)
一.依赖属性基本介绍 本篇开始学习WPF的另一个重要内容依赖属性. 大家都知道WPF带来了很多新的特性,其中一个就是引入了一种新的属性机制——依赖属性.依赖属性出现的目的是用来实现WPF中的样式.自动 ...
- java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E
21.编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public vo ...
- poj3422 Kaka's Matrix Travels(最小费用最大流问题)
/* poj3422 Kaka's Matrix Travels 不知道 k次 dp做为什么不对??? 看了大牛的代码,才知道还可以这样做! 开始没有理解将a 和 a‘ 之间建立怎样的两条边,导致程序 ...
- pojBuy Tickets2828线段树或者树状数组(队列中倒序插队)
这题开始的思路就是模拟:就像数组中插点一样,每一个想买票的人都想往前插队! 但是这样的话肯定TLE, 看了别人的思路之后才恍然大悟! 正解: 将开始的正序插入,变成倒序插入,这样的话,想一想:第 i ...
- Spring Annotation Processing: How It Works--转
找的好辛苦呀 原文地址:https://dzone.com/articles/spring-annotation-processing-how-it-works If you see an annot ...
- Image Wall - jQuery & CSS3 图片墙效果
今天我们要为您展示如何基于 jQuery 和 CSS3 创建一个整洁的图片墙效果.我们的想法是在页面上洒上一些大小不同的缩略图,并在当我们点击图片时候显示丝带,会显示一些描述,再次点击缩略图时,丝带将 ...
- SQL中利用DMV进行数据库性能分析
相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级 ...
- Cannot override the final method from SherlockFragmentActivity
调用ActionBarSherlock后页面找不到onCreateOptionsMenu报错 com.actionbarsherlock.app.SherlockFragmentActivity.on ...