java中级岗位面试试题答案解析_第1页
java中级岗位面试试题答案解析_第2页
java中级岗位面试试题答案解析_第3页
java中级岗位面试试题答案解析_第4页
java中级岗位面试试题答案解析_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单选题以下关于反射的说法中,哪一项是错误的? 回答错误class.forName()和classLoader都可用来对类进行加载classloader是将.class文件加载到JVM中,不会执行static中的内容class.forName得到的class是已经初始化完成的,classloder得到的class是还没有 链接的class.forName的所有重载方法无论任何情况下都会加载static块 正确选项D考点Java基础-面向对象编程 解析Class.forName(name, initialize, loader)带参函数也可控制是否加载 static 块, initialize为f

2、alse的时候是不加载static块,所以选项D是错误的,答案为D。单选题以下关于Map的说法中,哪一项是正确的?回答错误HashMap遍历时,取得数据的顺序和插入顺序一致,不允许key为null,允许value为 nullLinkedHashMap默认的遍历顺序是按照元素的插入顺序,也可以通过accessOrder来 改变遍历顺序为访问顺序Hashtable是HashMap的线程安全版,它支持线程的同步,即任一时刻只有一个线程 能写Hashtable,它允许记录的键或者值为nullTreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的降序排 序 正确选项B考点Ja

3、va基础-工具类解析D.select name, hp_max from heros order by hp_max limit _;正确选项B考卢-J 八、数据库-SQL解析选项A用于查询数据表中第一条数据的英雄名字;选项C用于查询数据表中第一条数据 的英雄名字和最大生命值;选项D用于查询数据表中最大生命值最低的英雄名称和最大生 命值,所以答案为Bo单选题下面是一段考查类初始化和反射的代码,关于这段代码,以下哪一项输出结果是正确的?public class ChildClass extends Parentclass public int age;private String name;/静

4、态代码块 static System.out.printin(ChildClass static);)/构造代码块(System.out.printin(nChildClass block);)/构造函数public ChildClass() System, out .print In (ChildClass constructor11);)/main方法public static void main(String f args) System. out .printin ( nChildClass start main*1);try Class classType =Class . forN

5、ame(Hcom.example.demo.mianshi.ChildClass”, false, ClassLoader.getSystemClassLoader();classType.newlnstance ();Field fields = classType.getFields();for (Field field : fields) System.out.print(field.getName()+”,);) catch (ClassNotFoundException | IllegalAccessException | InstantiationException ) e.pri

6、ntStackTrace ();)class Parentclass static System.out.printin(nParentClass static); ) (System.out.printin(ParntClass block); )public Parentclass () System.out.printIn(Parentclass constructorH; ) ) 回答错误Parentclass static ChildClass static ChildClass start main Parentclass block Parentclass constructor

7、 ChildClass block ChildClass constructor ag,ChildClass start mainChildClass static Parentclass static ChildClass block ChildClass constructorParentclass blockParentclass constructorage,ChildClass start mainChildClass static Parentclass static ChildClass block ChildClass constructor Parentclass block

8、 ParntClass constructor age,nameParentclass staticChildClass staticChildClass start mainParentclass blockParentclass constructorChildClass blockChildClass constructorage,name 正确选项 A 考点Java基础-编程基础解析首先运行程序得找到入口,而main就是程序的入口,但运行程序前需要加载类,类的加 载分为加载、链接、初始化三个过程,这里重点在初始化。main主方法会在构造器之前、 static变量初始化之后调用,这是由于

9、Java的惰性初始化,即Java编译器会保证每个 变量在使用之前会被初始化,而在main方法被调用之前无法知道是否存在主类的实例, 所以main主方法会在构造器之前,static变量初始化之后调用,所以BC是不对的。 然后,开始加载ChildClass类,因为ChildClass类继承于Parentclass类,加载 Parentclass类的时候,发现有static块,便执行了 static块(如果有些代码必须在项 目启动的时候就执行的话,需要使用静态代码块,这种代码是主动执行的,静态代码块在虚 拟机加载类的时候就会加载执行,而且只执行一次)。以上,当在Parentclass类加载完成之后,

10、会继续加载ChildClass类,然后发现 ChildClass类中也有static块,就会执行static块。在加载完所需的类之后,便开始执 行main方法。在main方法中执行new ChildClass()的时候会先调用父类的代码块, 然后调用父类的构造函数,构造代码块和构造函数都是给对象进行初始化的,但是构造代码 块在对象一建立就运行,优先于构造函数执行,构造代码块是给此类所有对象进行的初始化, 构造函数只是给它对应的对象初始化,所以先调用代码块再调用构造函数,然后是调用自身 的代码块,然后是调用自身构造函数。最后,getFields会获得某个类的所有的公共(public)字段,包括父

11、类中的字段。所以 只有age,这样就排除了 D选项,所以选择A。单选题为了让网卡ethO支持多队列,将其绑定到CPU0和CPU2上,假设该网卡的irq为 150,那么使用如下哪个指令能实现中断的正确绑定? 回答错误echo 5 /proc/irq/149/smp_affinityecho 4 /proc/irq/149/smp_affinityecho 3 /proc/irq/149/smp_affinitycho 2 /proc/irq/149/smp_affinity正确选项A考占p八、基础工具-Linux解析CPU位掩码计算是采用二进制计算的,每一位表示一个CPU核,最右侧是最低位,表示

12、 CPU0,例如0001表示绑定到CPU0上,0001绑定到CPU1上,而同时绑定到 CPU0和CPU2上,是0101,转换为十六进制为0 x5,因此答案为Ao单选题关于MySQL的几种日志类型:redo log、binlog、undo log,以下哪个选项的说法是错 误的?回答错误A.redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化 B.binlog是属于MySQL Server层面的,又称为归档日志,属于逻辑日志,是以二进制的 形式记录这个语句的原始逻辑undo log保存了事务发生之前数据的一个版本,可以用于回滚,同时可以提供多版本并发 控制下的读

13、(MVCC),即非锁定读MySQL的binlog的statement模式不需要记录每一行数据的变化,减少了 binlog 日志量,节省了 I/O以及存储资源,所以在任何条件下都可以放心使用 正确选项D考点数据库-MySQL解析在MySQL的binlog的statement模式中,发现不少情况会造成MySQL的复制出 现问题,主要在修改数据的时候使用了某些特定的函数或者功能的时候会出现。比如: sleep()函数在有些版本中就不能被正确复制,在存储过程中使用了 lastjnsert_id()函 数,可能会使slave和master上得到不一致的id等等。row模式是基于每一行来记 录的变化,不会

14、出现类似的问题,所以D的说法是错误的,其他说法都是正确的。单选题若你想要查询笛卡尔积,以下儿个SQL命令中,哪一项是正确的? 回答正确SELECT * FROM player, teamSELECT playr_id, player . team_id, playr_nam,height,七am_nam FROM player, team WHERE player.team_id = team.team_idSELECT p.player_name, p.height, h.height_levelFROM playr AS p, height_grades AS hWHERE p.heigh

15、t BETWEEN h.height_lowest AND h.height_highestSELECT * FROM player LEFT JOIN team on player.team_id = tamtam_id 正确选项A考点数据库-SQL解析B选项用于两张表的等值连接就是用两张表中都存在的列进行连接。也可以对多张表进行 等值连接;C选项用于进行多表查询的时候,如果连接多个表的条件是等号时,就是等值 连接,其他的运算符连接就是非等值查询;D选项用于除了查询满足条件的记录以外,外 连接还可以查询某一方不满足条件的记录。两张表的外连接,会有一张是主表,另一张是从 表。如果是多张表的外连

16、接,那么第一张表是主表,即显示全部的行,而第剩下的表则显示 对应连接的信息,综上所述,答案为Ao单选题这是一段考查位运算的测试代码,以下执行结果中哪一项是正确的?public class MarkTest public static void main(String L args) int x = 1;int y = x;System.out.printin(y);)回答正确1-20_ 1正确选项B考占Q八、基础工具-Linux解析假设int占2个字节,那么1的二进制表示是0000 0001 , 表示按位取反,则 0000 0001变为1111 1110,在计算机中整数用补码形式表示,正数的补

17、码是它本身, 负数的补码是原数值除符号位按位取反再加1,由补码求原数值也是按位取反再加1,那 么1111 1110除符号位按位取反再加1变成1000 0010,即-2。故答案B正确。单选题小刘准备执行如下代码:public class StackOvrflowErrorDmo public static void main(String args) javaKeeper();)private static void j avaKeeper() j avaKeeper();)执行后他发现代码抛出异常,以下异常中,哪一项是该代码抛出的? 回答正确A.java.lang.OutOfMemoryErr

18、or: Java heap spaceB.java.lang.OutOfMemoryError: unable to create new native threadC.java.lang.OutOfMemoryError: Out of swap spaceD.j ava ,lang.StackOverflowError正确选项D考占-J 八、Java 高级-JVM解析JVM虚拟机栈是有深度的,在执行方法的时候会伴随着入栈和出栈,上边的方法可以看到, main方法执行后不停的递归,迟早把栈撑爆了,所以会抛出java.lang.StackOverflowError, 答案为 D。单选题关于下面

19、这段代码,以下哪一项的执行结果是正确的?public class IntegerTest public static void main(String args) Integer a = 10;Integer b = 10;Integer c = 129;Integer d = 129;System.out.printIn(a = b);System.out.printin(c = d);)回答正确A.true trueB.false falseC.true falseD.false true正确选项c考占V八、Java基础-编程基础解析int是基本数据类型,interger是int的封装类,

20、int默认值为0 ,而interger默认值 为null, Interger使用需要判空处理,Integer的缓存机制是:为了节省内存和提高性 能,Integer类在内部通过使用相同的对象引用实现缓存和重用,Integer类默认在-128 z 127之间,可以通过-XX:AutoBoxCacheMax进行修改,且这种机制仅在自动装箱 的时候有用,在使用构造器创建Integer对象时无用。所以通过分析可知。当d和b小 于128时,他们的引用相同,所以第一个是true。第二个大于128以后内存地址引用 不同,所以是false,那么答案应该是Co单选题下面关于Java单元测试的说法,哪一项是错误的?

21、回答正确JUnit的Test依附在public void方法,可以作为一个测试案例JUnit的Before依附的方法全局只会执行一次,而且是第一个运行JUnit的After依附的方法在测试方法运行之后运行采用Mockito框架虚拟出一个单元测试的外部依赖,通过只注重测试代码的流程与结果, 真正地实现测试目的正确选项B考占J八、Java基础-编程基础解析Before:方法之前运行一次,不是只能全局执行一次,所以B错误。BeforeClass:测试类所有方法之前运行一次,所以答案B应该是用BeforeClass才 对。单选题关于Spring事务,以下哪个说法是错误的?回答正确private方法是不

22、会被Spring代理的,因此是不会有事务产生的当前类调用的内部调用。在内部被调用方法上加Transactional(rollbackFor = Exception.class),这个是不生效的事务方法异常被catch住,事务不生效在调用方法上添加Transactional,但是方法抛出了 lOException,事务会回滚正确选项D考占J八、框架-Spring基础解析Transactional没有指定回滚异常,这个时候默认的回滚异常是RuntimeException , 如果出现其他异常那么就不会回滚事物,lOException没有继承RuntimeException。 综上所述,答案选择Do

23、单选题在异常处理中,如释放资源,关闭数据库、关闭文件,应由以下哪一项语句完成? 回答正确try子句catch子句finally 子句throw子句正确选项C考占P八、Java基础-异常处理解析选项A中,try用来执行正常的程序,该程序可能发生异常。选项B中,catch捕捉try 代码块中的异常,并进行处理操作。选项C中,finally无论如果最终都将执行的代码, 一般用来关闭资源的消耗。选项D中,throw在方法体中抛出异常对象。综上所述,本 题选Co单选题在Linux系统下,我们在查看内存使用情况时,经常会使用到free命令,其中我们经常 观察buffer/cache的值,关于其代表的含义,

24、以下哪一项是正确的?回答错误buff/cache = Buffers + Cachedbuff/cache = Buffers + Cached + SReclaimablec.buff/cache = total - used - freeD.buff/cache = total - used - available正确选项B考占J 八、基础工具-Linux解析使用free命令时,可以观察到该命令的视角,内存分为total、used、free、buff/cache、 available,五个组成部分,这里的buff/cache除了包含常规意义上的Buffers + Cached部分外还包含了

25、一个我们极容易忽略的部分SReclaimable。buff/cache的功 能主要强调那些能被回收的,而其中SReclaimable是指可以被回收的内核内存,由于被 内核管理,所以在设计应用程序占用内存、以及计算当前系统还有哪些内存可以使用时,由 于内存是动态变化的,极容易错误估计是否内存大小,产生00M问题。单选题以下函数中,哪一项不是聚集函数?回答正确countmaxsumhaving正确选项D考占J 八、数据库-SQL解析A选项是用于统计总行数,属于聚集函数;B选项是用于求列中的最大值,也属于聚集函 数;C选项是用于求列中数字的和,也属于聚集函数;D选项不属于聚集函数,having主 要

26、用于数据分组,综上所述,答案为Do单选题如下是一段SELECT语句:SELECT aa,bb FROM cc WHERE dd GROUP BY ee;以下该语句执行顺序中,哪一项是正确的?以下为 HashMap、Hashtable、LinkedHashMap 和 TreeMap 的相关概念:l.HashMap是最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获 取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。因为键对象不可 以重复,所以HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null, 是非同步的。.Hashtable与Hash

27、Map类似,是HashMap的线程安全版,它支持线程的同步,即 任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtale在写入时会比较慢,它 继承自Dictionary类,不同的是它不允许记录的键或者值为null,同时效率较低。.LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时, 先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部 特性。.TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序 排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历T

28、reeMap时,得至U 的记录是排过序的,不允许key值为空,非同步的。由此可知,B的表述有误,故答案为Bo单选题关于SQL语句的优化,以下哪一项说法是错误的? 回答正确类似分页功能的SQL,建议先用主键关联,然后返回结果集,效率会高很多通常情况下,join的性能比较差,建议改造成子查询写法多表联接查询时,关联字段类型尽量一致,并且都要有索引尽可能不使用TEXT/BLOB类型,确实需要的话,建议拆分到子表中,不要和主表放在一 起,避免SELECT*的时候读取数据性能太差 正确选项B考点数据库-SQL 解析通常情况下,子查询的性能比较差,建议改造成join写法,所以选择Bo单选题在海量用户的应用

29、开发和运维工作中,发现某个服务器经常出现内存不足的报警,经分析服 务器为频繁10操作并有大量内存是缓存,于是某系统管理员采取了两项措施缓解内存不 足:措施一:建立一个新的swap分区,并开启swap措施二:每隔 5 分钟,定时运行 echo 3 /proc/sys/vm/drop_caches回答正确FROM WHERE GROUP BY SELECTWHERE FROM GROUP BY SELECTc.SELECT FROM WHERE GROUP BYD.FROM WHERE SELECT GROUP BY正确选项A考点数据库-SQL解析SELECT语句的标准执行顺序为:FROM WHE

30、RE GROUP BY SELECT,故A选项正 确。单选题如下是一段线程的运行代码,以下输出的结果中,哪一项是正确的?public class Counter public volatile static int volatileCount = C;static Atomic工ntgar atomicCount=new Atomiclnteger();public static void inc () try (Thread.sleep(5); catch (InterruptedException e) )volatileCount+;atomicCount.incrementAndGet

31、();)public static void main (String args) throws InterruptedException (final CountDownLatch latch = new CountDownLatch(1000);/同时启动1000个线程,去进行i + +计算,看看实际结果 for (int i = 0; i 680K(54784K)2908K-688K(180736K)r 0.0314018 secs Times: user=0.00 sys=0.00z real=0.07 secsFi 1 1 GC (System . gc () ) PSYoungGe

32、n : 6fiOK-9K (547S4K) ParOl dGen : 8K-530K(125952K) 688K-530K(180736K), Metaspace:2656K-2656K(1056768K)r 0.0115257 secs Times: user=0.03 sys=0.00, real=0.01 secs以下关于这段日志的说法中,哪一项是错误的?回答正确GC日志开头的GC和Full GC说明了这次垃圾收集的类型PSYoungGen和ParOldGen是指GC发生的区域,分别代表使用ParallelScavenge垃圾收集器的新生代和使用Parallel old垃圾收集器的老生代

33、PSYoungGen后面的2908K-680K(54784K)代表的是GC前Java堆已使用容量-GC后Java堆已使用容量(Java堆总容量)0.0314018 secs代表该内存区域GC所占用的时间,单位是秒正确选项C考点Java 高级-JVM解析1.在方括号中PSYoungGen:后面的2908K-680K(54784K)代表的是GC前该内存区域已使用的容量-GC后该内存区域已使用的容量(该内存区域总容量)2.在方括号之外的2908K-688K(180736K)代表的是GC前Java堆已使用容量-GC后Java堆已使用容量(Java堆总容量)综上所述,答案为Co单选题如果你想要修改内核参

34、数,让Linux支持更大的接收窗口,提高网络性能,可以修改以下 哪个参数?回答错误net . ipv4.tcp_window_scalingnet . ipv4.tcp_fastopennet . ipv4.tcpkeepalivetimenet . ipv4.tcp_slow_start_after_idle正确选项A考占J八、基础工具-Linux解析net. ipv4 . tcp_fastopen是允许服务器和客户端在连接建立握手阶段开始传输数据,为服务器节省个RTT的时延;net. ipv4 . tcpkeepalivetime是开启tcp长链接,用于在指定描述后没有数据爆文传输时,启动

35、探测报文; net. ipv4 . tcp_slow_start_af ter_idle 是提升 HTTP keepalive 连接的网络性能;net. ipv4 . tcp_window_scaling能够提高窗口的大小,获得更好的传输性能,因此答案为Ao单选题如下是一段Java代码,以下输出的结果中,哪一项是正确的?public class Stringiest public static void main(StringM args) Stringsi=Hello;Strings2=nHellon;Strings3=nHeln + nloH;Strings4=nHeln + newStr

36、ing (Hlon);String s5 = new String (HHelloH);String s6 = ern();String s7 = nH;String s8 = ello;String s9 = s7 + s8;System.out.printin(si = s2);System.out.printIn(si = s3);System.out.printIn(si = s4);System.out.printin(si = s9);System.out.printIn(s4 = s5);System.out.printIn(si = s6);)回答正确A.truefalsefa

37、lsefalsefalsefalseB.true true false false false falsetruetruefalse false false truetrue true false true false true 正确选项 C 考点Java基础-编程基础解析si在创建对象的同时,在字符串池中也创建了其对象的引用。由于s2也是利用字面量创 建,所以会先去字符串池中寻找是否有相等的字符串,显然si已经帮他创建好了,它可 以直接使用其引用。那么si和s2所指向的都是同一个地址,所以sl =s2o S3是一 个字符串拼接操作,参与拼接的部分都是字面量,编译器会进行优化,在编译时S3就变

38、 成Hello了,所以sl =s3o s4虽然也是拼接,但、lo是通过new关键字创建的,在 编译期无法知道它的地址,所以不能像S3 一样优化。所以必须要等到运行时才能确定, 必然新对象的地址和前面的不同,同理,s9由两个变量拼接,编译期也不知道他们的具体 位置,不会做出优化。s5是new出来的,在堆中的地址肯定和s4不同。s6利用intern() 方法得到了 s5在字符串池的引用,并不是s5本身的地址。由于它们在字符串池的引用 都指向同一个Hello”对象,自然sl = =s6o综上所述,答案为Co单选题由于业务延迟较大,为了优化业务性能,所以手动增大了 TCP发送缓冲区的最大值内核参 数,

39、但是优化以后发现TCP发送缓冲区的最大值没有生效,以下原因中,哪一项是最有可 能的?这两项措施明显改善了服务器内存的高水位,那么从长期运行的角度来看,这两种做法是否 对用户体验也起到了优化作用?回答正确起到了长期优化作用,通过降低内存占用率,让用户可以使用更多的内存空间使用swap起到了长期优化作用,因为将内存交互到磁盘后,可以使用更多的内存,但 echo 3 /proc/sys/vm/drop_caches 没能够有效释放内存使用swap不能起到优化作用,因为要进行swap in操作会带来更高的I。负载。echo 3 /proc/sys/vm/drop_caches起到了优化作用,释放了内存

40、中长期不被使用的文件 缓存swap短期内能缓解内存不足,但是长期来看,换入换出时易导致10性能抖动,echo 3 /proc/sys/vm/drop_cdches临时释放内存可以在系统自动释放前,更早的人为介入匿名 内存的释放工作,但是经常手动执行,只会让进程访问缓存失效,更频繁的访问磁盘会导致 用户体验下降 正确选项D考占7八、基础工具-Linux解析正如D选项描述的,swap在swap in/out , drop_caches在用户频繁访问热点文件 时,都会造成文件I/O的频繁读写,造成10压力增大,因此长期运行不会对用户体验起 到优化,反而会造成卡顿、系统毛刺等现象。单选题为了定位某台服

41、务器可用内存突然增大,是操作系统主动释放了内存(例如:内存紧张、00M等原因)还是人为使用echo控制选项/proc/sys/vm/drop_caches 释放了内存问题,你可以观察至ij /proc/vmstat 文件的变化,然后执行以下命令:$ grep drop /proc/vmstatdrop_pagecache 3drop_slab 2你发现该文件的两个选项drop_pagecache 、 drop_slab对应的值不是0。以下通过这两个内存事件的关键参数得到的结论中,哪一项是正确的?回答正确A.回答错误net. ipv4 . tcp_wmem 和 nt.ipv4.tcp_mem 需

42、要同时调整才能生效net. ipv4 . tcp_wmem由操作系统动态调整,开发者必须在应用程序手动设置最大和 最小发送缓存net. ipv4 . tcp_wmem 的 max 超过了 net. core . wmem_max , 系统以net. core . wmem_max值作为TCP发送缓冲区最大值net. core . wmem_max的值设置过大,超过了系统的内存,导致其设置项不生效正确选项C考点基础工具-Linux解析Linux的内核参数往往受到多个参数之间的制约,net. ipv4 . tcp_wmem的max值就会受至U net. core . wmem_max 的影响, 旦

43、超过 net. core . wmem_max 后,系统会以 net. core . wmem_max 值作为 TCP 发 送缓冲区最大值,因此答案为Co单选题为了研究某一程序是否会存在内存泄露,使用了 strace来分析该命令的执行过程,结果 如下:$ strace cat /etc/passwdexecve (n/usr/bin/catHf catnr n/etc/passwdnr 0 x7ffdffdad2e8 /* 24 vars */) = 0brk(NULL)= 0 x555dd7706000 mmap(NULL, 40915, PROT_READ, MAP_PRTVATE, 3,

44、 0) = 0 x7f9df16f5000munmap(0 x7f9df16f5000 z 40915)= 0brk(0 x555dd7727000)= 0 x555dd7727000 close (2)exit group (0)+ exited with 0 +通过对该程序的分析可知,以下对该程序使用地址空间描述中,哪一项是不正确的? 回答正确该程序是用了 mmap(2)和munmapd(2),所以在进程虚拟地址空间通过Memory Mapping Region (内存映射区)方式修改了进程的地址空间(address space)该程序是用了 brk(2),所以在进程虚拟地址空间通过hea

45、p(堆)方式修改了进程的地址空 间(address space)该程序是用了 brk(2),所以在进程虚拟地址空间通过stack(栈)方式修改了进程的地址 空间(address space)该程序使用了 Paging (分页)来转换虚拟地址为物理地址,实现了应用程序到虚拟地址再 到物理地址的访问正确选项C考占Z7 八、基础工具-Linux解析进程直接读写的都是虚拟地址,虚拟地址最终会通过内核的Paging (分页)功能来转换 为物理内存的地址;虚拟地址根据应用程序调用的函数,有不同的划分,其中brk(2)和 sbrk(2)修改的是 heap(堆),而 mmap(2)和 munmap(2)修改的

46、是 Memory Mapping Region (内存映射区),因此正确答案为C。多选题在分布式系统的架构下,网络存储技术可以让应用与物理服务器解耦,提升灵活性和可运维 性,以下关于分布式存储技术的描述中,哪些是正确的? 回答错误10密集型的应用不应该考虑使用NFS技术,因为NFS会损失一定10性能分布式系统设计应优先使用对象存储技术(Object Storage),而不是块存储技术(Block Storage),因为对象存储维护成本更低、扩展性更强搭建分布式存储系统使用的物理服务器,一般不需要考虑磁盘RAID相比软件分布式存储,商业硬件存储产品可靠性更高,因此在生产环境一般不使用软件分布 式

47、存储正确选项A、B、C考占V八、分布式架构-存储解析选项A中,NFS会损失一定10性能;选项B中,分布式系统设计应优先使用对象存 储技术(ObjectStorage);选项C中,分布式存储系统从软件层面解决了数据多副本的 跨服务器冗余,一般不需要做磁盘RAID,故A、B、C的描述正确;选项D中,商业存 储产品价格高,生产环境大规模使用软件分布式存储案例已经很多,所以D的描述不正确, 因此答案为ABCo多选题在系统设计中,可以通过哪些设计模式降低资源使用率? 回答错误A.prototype B.abstract factoryC.singleton D.flyweight漏选正确选项C、D考点框

48、架-设计模式解析单例模式肯定降低了资源使用率,保证该类的实例永远只有一个,原型模式适用于在初始化 信息不发生变换的情况,克隆的方法比较适合,主要的目的是避免重新初始化对象,如果后 面需要对新对象进行,还需要区分深拷贝和浅拷贝。无论是深拷贝还是浅拷贝只是复制了资 源,并没有降低资源使用率。享元模式(Flyweight):基于共享技术用于把一些共同的信 息(或模块)抽象出来,避免了大量相类似的开销,也降低了资源的使用率,所以答案C和 D是符合要求的。多选题以下场景中,哪些会存在索引失效的情况? 回答错误A.a = 1漏选B.a like 1%a fa 1漏选a = 1 or b = 2正确选项A、

49、 B、 C、 D坐上考点数据库-SQL解析在选择度比较低的时候,选项A和选项C都可能存在失效的场景;选项B在左模糊不 适用于B+树索引所以导致失效;选项D在条件之中,两个字段在只有一个字段有索引 的情况下,索引没失效。多选题以下关于Java的引用类型的描述,哪些说法是正确的?回答错误如果一个对象是强引用,它就会一直存在于内存中如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不 足了,就会回收这些对象的内存漏选在GC时,不论内存是否充足,当发现了只具有弱引用的对象,都会回收它的空间 漏选如果一个对象仅持有虚引用,那么它在任何时候都可能被垃圾回收器回收正确选项B、 C

50、 D考点Java基础-面向对象编程解析一:强引用只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足时,JVM也会 直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以 显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了。二:软引用软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收, 只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的 内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术,比如网页缓存,图片缓 存等。在 JDK1.2 之后,用 ja va.

51、la ng. ref. SoftReference 类来表示软引用。三:弱引用弱引用的引用强度比软引用要更弱一些,无论内存是否足够,只要JVM开始进行垃圾回收, 那些被弱引用关联的对象都会被回收。在JDK1.2之后,用 java.lang.ref.WeakReference 来表示弱弓【用。四:虚引用虚引用是最弱的一种引用关系,如果一个对象仅持有虚引用,那么它就和没有任何引用一样, 它随时可能会被回收,在JDK1.2之后,用PhantomReference类来表示,通过查看这 个类的源码,发现它只有一个构造函数和一个get()方法,而且它的get()方法仅仅是返 回一个null,也就是说将永远

52、无法通过虚引用来获取对象,虚引用必须要和 ReferenceQueue引用队列一起使用。综上所述,答案为ABCDo有用户刚刚执行过 echo 1 /proc/sys/vm/drop_caches有用户刚刚执行过 echo 3 /proc/sys/vm/drop_caches有用户刚刚执行过 echo 2 /proc/sys/vm/drop_caches用户曾经使用过echo 控制选项 /proc/sys/vm/drop_caches ,但无法根据此事件判断当前内存空间增大,是用户手工执行该指令还是操作系统主动是否内存造 成的正确选项D考点基础工具-Linux解析首先drop_caches是一种

53、内存事件,内核会在/proc/vmstat中来记录这一事件,上面两个参数中,echo 1会导致drop_pagecache增加,echo 2会导致 drop_slab 增力口, echo 3 会导致 drop_pagecache 和 drop_slab 同时增加。但是要注意的是,该值表示上一次重启操作系统之后运行次数的累加,因此在没有将 此参数进行实时监控时,无法确定用户何时执行了 echo指令,只能确定用户执行过该操 作,因此答案为Do单选题Linux内核为了保障高优先级的任务运行,设置了不同的任务调度器,内核会优先从哪个 调度器中选择任务执行? 回答错误CFS调度器RT调度器Deadlin

54、e调度器FIFO调度器正确选项C考点基础工具-Linux解析每个CPU都有自己的运行队列,每个需要运行的线程必须要先加入到这些队列才能运行。 队列的调度器优先级从高到低依次为Deadline, RT(RealTime)、CFS(Fair),因此答案 为Co单选题很多时候我们会依赖于SELECT的执行顺序来判断查询是否会返回我们希望的数据,以下 SELECT执行的顺序中,哪一项是正确的?回答正确FROM WHERE GROUP BY HAVING SELECT 的字段 DISTINCT ORDER BY LIMITSELECT 的字段 FROM WHERE GROUP BY HAVING DIS

55、TINCT ORDER BY LIMITFROM WHERE SELECT 的字段 GROUP BY HAVING DISTINCT ORDER BY LIMITFROM WHERE HAVING SELECT 的字段 GROUP BY DISTINCT ORDER BY LIMIT正确选项A考占J八、数据库-SQL解析SELECT语句的执行顺序是很重要的一个点,我们可以从执行顺序上来推断一个SQL会 发生什么,从而理解我们的查询能够得到什么结果。正确的执行顺序是FROM WHERE GROUP BY HAVING SELECT 的字段 DISTINCT ORDER BY LIMIT,所 以选

56、Ao单选题如下是一段Java代码,以下输出的结果中,哪一项是正确的?public class ExceptionTest public int testExceptionReturn() int i = 1;try (i + + ;int x = i / 0; catch (Exception e) i+;return i; finally i + +;)return i;)public static void main(String args) ExceptionTest exceptionTest = new ExceptionTest();int testReturn3 = exceptionTest.testExcept

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论