每日一练

选择题

  • Java选择题10道
  1. 以下程序会输出什么
    int a =100,b=50,c=a-- -b,d=a-- -b;
    System.out.println( a);
    System.out.println( b);
    System.out.println( c);
    System.out.println( d);
    正确答案: C 你的答案: C (正确)
    A. 100 48 48 49
    B. 100 49 48 52
    C. 98 50 50 49
    D. 98 50 50 48

解析(1)c=a-- -b,先执行a-b操作,得到c=50,再执行a减1操作,得到a=99
(2)d=a-- -b,先执行a-b操作,得到d=49,再执行a减1操作,得到a=98

  1. 程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于 10 ,使用 throw 语句显式地引发异常,异常输出信息为 ”something’swrong!” ,语句为()
    正确答案: A 你的答案: A (正确)
    A. if(i>10)throw new Exception(“something’swrong!”);
    B. if(i>10)throw Exception e(“something’swrong!”);
    C. if(i>10) throw new Exception e(“something’swrong!”);
    D. if(i>10)throw Exception( “something’swrong!”);

解析:throw是语句抛出异常,有两种用法: //***抛出异常e实例或新的Exception实例1.catch中的throw e; 2.方法体中的throw new Exception(); 区别如下: throw e是将已经catch到的e重新抛出,而throw new Exception()是重新生成一个Exception类的对象并抛出。有两点重要区别,第一e中记录了原异常的信息,如除零异常的信息,而new Exception()是一个新对象,当中不包含任何有用的信息;第二e可能存在向上转型,即e的实际类型可能是Exception的子类,而new Exception()就是Exception类的对象。

  1. 以下会产生信息丢失的类型转换是( )
    正确答案: B 你的答案: C (错误)
    A. float a=10
    B. int a=(int)8846.0
    C. byte a=10; int b=-a
    D. double d=100

会产生信息丢失不如说丢失精度,这样可能更容易明白,而精度丢失只会发生在从大范围到小范围的转换
上面四个选项,只有 B 是从 double 到 int ,也就是从大范围到小范围。

  1. 下列关于修饰符混用的说法,错误的是( )
    正确答案: D 你的答案: D (正确)
    abstract不能与final并列修饰同一个类
    abstract类中不应该有private的成员
    abstract方法必须在abstract类或接口中
    static方法中能直接调用类里的非static的属性
  2. 现有如下代码段:
    x = 2;
    while(x<n/2)
    x = 2*x;
    假设n>=0,则其时间复杂度应为( )
    正确答案: A 你的答案: C (错误)
    A. O(log2(n))
    B. O(nlog2(n))
    C. O(n)
    D. O(n^2)

1.x = 2
2. x = 2^x = 2 ^t
3. 当x>n/2时,跳出循环
所以n/2 <= 2^t -> log2(n/2) <=log2(2 ^t) -> t>=log2(n) -1
所以结果O(n) = log 2(n)

  1. 下面有关JVM内存,说法错误的是?
    正确答案: C 你的答案: D (错误)
    A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
    B. 虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
    C. 方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的
    D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的

方法区在JVM中也是一个非常重要的区域,它与堆一样,是被 线程共享 的区域。 在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

  1. given the following code,what will be the output?
    class Value{
    public int i=15;
    }
    public class Test{
    public static void main(String argv[]){
    Test t=new Test( );
    t.first( );
    }
    public void first( ){
    int i=5;
    Value v=new Value( );
    v.i=25;
    second(v,i);
    System.out.println(v.i);
    }
    public void second(Value v,int i){
    i = 0;
    v.i = 20;
    Value val = new Value( );
    v = val;
    System.out.println(v.i+" "+i);
    }
    }
    正确答案: A 你的答案: B (错误)
    A. 15 0 20
    B. 15 0 15
    C. 20 0 20
    D. 0 15 20

这题选A,考察的是值传递与引用传递,Java中原始数据类型都是值传递,传递的是值得副本,形参的改变不会影响实际参数的值, 引用传递传递的是引用类型数据,包括String,数组,列表, map,类对象等类型,形参与实参指向的是同一内存地址,因此形参改变会影响实参的值。

8.下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
byte[] src,dst;
正确答案: B 你的答案: D (错误)
dst=String.fromBytes(src,“GBK”).getBytes(“UTF-8”)
dst=new String(src,“GBK”).getBytes(“UTF-8”)
dst=new String(“GBK”,src).getBytes()
dst=String.encode(String.decode(src,“GBK”)),“UTF-8” )

选B,先通过GBK编码还原字符串,在该字符串正确的基础上得到“UTF-8”所对应的字节串。

  1. JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()
    正确答案: B 你的答案: B (正确)
    this.A(x)
    this(x)
    super(x)
    A(x)

this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为this(参数);
super是调用父类的方法;
A(a)这种形式是在new一个类时使用。

  1. 下列程序的运行结果
    public void getCustomerInfo() {
    try {
    // do something that may cause an Exception
    } catch (java.io.FileNotFoundException ex) {
    System.out.print(“FileNotFoundException!”);
    } catch (java.io.IOException ex) {
    System.out.print(“IOException!”);
    } catch (java.lang.Exception ex) {
    System.out.print(“Exception!”);
    }
    }
    正确答案: A 你的答案: B (错误)
    IOException!
    IOException!Exception!
    FileNotFoundException!IOException!
    FileNotFoundException!IOException!Exception!

题目说抛出一个异常,但是没说具体是什么异常,那么就要分情况了:
1.如果抛出一个FileNotFoundException(或其子类),那么最终结果就打印FileNotFoundException
2.如果抛出一个IOException,或者IOException的子类(不包含FileNotFoundException及其子类),那么最终结果就打印IOException
3.如果抛出一个Exception(不包含IOException及其子类),那么最终结果就打印Exception.
以上,所以3个皆有可能.但是,不管是哪一种情况,只会输出其中之一。

  • 智力题5道
  1. 在同一侧的房号为1、2、3、4的四间房里,分别住着来自韩国、法国、英国和德国的四位专家。有一位记者前来采访他们
    韩国人说:“我的房号大于德国人,且我不会说外语,也无法和邻居交流”;
    法国人说:“我会说德语,但我却无法和我的邻居交流”;
    英国人说:“我会说韩语,但我只可以和我的一个邻居交流”;
    德国人说:“我会说我们这四个国家的语言。”
    那么,按照房号从小往大排,房间里住的人的国籍依次是( )。
    正确答案: C 你的答案: C (正确)
    A. 英国 德国 韩国 法国
    B. 法国 英国 德国 韩国
    C. 德国 英国 法国 韩国
    D. 德国 英国 韩国 法国
  2. 一个国家一元以下的硬币为:一分、五分、一角、二角五分、五角这五种。汤 姆买东西付钱后,营业员找给他 0.41 元,如果找的是六个硬币,其中三个一定是 ?
    正确答案: C 你的答案: A (错误)
    一分币
    五分币
    一角币
    二角五分币

三个一定是?

  1. 两艘轮船在同一时刻驶离河的两岸,一艘从A驶往B,另一艘从B开往A,其中一艘开得比另一艘快些,因此它们在距离较近的岸500公里处相遇。到达预定地点后,每艘船要停留15分钟,以便让乘客上下船,然后它们又返航。这两艘渡轮在距另一岸100公里处重新相遇。试问河有多宽?
    正确答案: B 你的答案: C (错误)
    1000
    1400
    1500
    1600

当两艘渡轮在 x 点相遇时,它们距 A 岸 500 公里,此时它们走过的距离总和等于河的宽度。当它们双方抵达对岸时,走过的总长度等于河宽的两倍。在返航中,它们在 z 点相遇,这时两船走过的距离之和等于河宽的三倍,所以每一艘渡轮现在所走的距离应该等于它们第一次相遇时所走的距离的三倍。在两船第一次相遇时,有一艘渡轮走了 500 公里,所以当它到达 z 点时,已经走了三倍的距离,即 1500 公里,这个距离比河的宽度多 100 公里。所以,河的宽度为 1400 公里

  1. 李氏夫妇请4对夫妇来家吃饭,已知每人不和自己和配偶握手,每人至少握手一次,不重复和人握手,李先生最后一问每人握手次数都不一样,问李太太握手几次?
    正确答案: B 你的答案: D (错误)
    A. 3
    B. 4
    C. 5
    D. 6

除了李氏夫妇以外其他八个人握手次数全部不同,因为一个人最多也就握手8次(自己和配偶除外),所以这八个人没人握手的次数分别为1-8次
(1)握手8次的人和每个人都握手了,所以握手1次的人,只和握手8次的人握手,握手8次的人和李氏夫妇握手,握手一次的人没有和李氏夫妇 握手
(2)握手7次的人没有和握手1次的人握手,所以必然和李氏夫妇握手,同时握手2次的人只和握手7,8次的人握手,所以没有和李氏夫妇握手,
(3)依次类推,握手6次的人和李氏夫妇握手,握手3次的人没有和李氏夫妇握手
(4)握手5次的人和李氏夫妇握手,握手4次的人没有和李氏夫妇握手
最终可以得到:握手8,7,6,5次的人和李氏夫妇握手,所以李氏夫妇握手的次数都是4次

  1. 已知每个城市的用水需求相同,每月水库的进水速率恒定不变。现有一座水库供水,如果供应10个城市的话,一个月水库就会枯竭;如果供应8个城市的话,一个半月水库就会枯竭。当前城市化进程不断加快,新的城市不断产生,为了能够持续满足12个城市的供水,还至少需要建设几个这样的水库?
    正确答案: A 你的答案: D (错误)
    A. 2
    B. 3
    C. 4
    D. 5

x为每月进水量,y为一个城市每月需水量,则
x + 1 = 10y
1.5x + 1 = 1.5*8y
得到x = 4y,则12城市需要3个水库保证不断水

  • 数量关系题5道
  1. 某年度某机构关于中国宠物主人消费行为及倾向调查回收的10680份有效问卷显示:女性养宠者占58.1%,宠物主人为“80—90后”占79.5%。将宠物定义为“孩子”“亲人”“朋友”和“宠物”的分别为54.5%、33.4%、7.7%和3.2%。8.9%的人月开销在100元以内,49.4%的人开销在101至500元之间,而花费在501至1000元之间的达到25%,月消费1000元以上的人群达到16.4%。在购买物品方面,购买宠物食物的人数达到有效问卷总人数的94.5%,其次为药品、保健品,以及日用品、玩具、服饰五项,均接近60%。宠物主人外出时,四成“委托亲朋照顾”,三成“一起带走”,委托寄养还不到20%。在训练方面,99%的宠物处于自主训练或放任生长的状态,但近一半人希望爱宠得到专业训练。在购买渠道方面,74%的被访问者选择综合电商平台,选择线下综合商店或专卖店者为53.3%,选择宠物类垂直电商平台的占33.6%,但其复购率更高。值得注意的是,目前宠物主人对购物类O2O服务有选择意向的不足4.0%。
    (2)问卷中对宠物没有花费的人数约为:
    正确答案: D 你的答案: D (正确)
    38
    36
    34
    32
  2. 四人进行篮球传接球练习,要求每人接球后再传给别人。开始由甲发球,并作为第一次传球,若第五次传球后,球又回到甲手中,则共有传球方式:
    正确答案: A 你的答案: A (正确)
    60种
    65种
    70种
    75种
  3. 人租下一店面准备卖服装,房租为每月1万元,重新装修花费10万元,从租下店面到开始营业花费3个月时间,开始营业后第一个月扣除所有费用的纯利润为3万元,如每月利润比上月增加2000元,而成本不变,问该店在租下店面后,第几个月收回投资?
    正确答案: C 你的答案: D (错误)
    A. 7
    B. 8
    C. 9
    D. 10
    在这里插入图片描述
  4. 2 ,2 ,8 ,38 ,( )
    正确答案: D 你的答案: C (错误)
    A. 76
    B. 81
    C. 144
    D. 182

c=5*b-a,相邻三个数分别为a,b,c

  1. 【单选】某海岛城市的主要产业为旅游业,之前已经运营了M个景点,现在扩大运营新增了N(>1)个景点,为了方便游客通行任意两个景点都开通了直通巴士(在两个景点间往返),此次新增景点共新开通了58趟直通巴士,请问这个海岛城市总共运营了多少个景点
    正确答案: D 你的答案: A (错误)
    14
    15
    16
    17
  • 判断推理5道
  1. 存疑时有利于被告原则是指在刑事诉讼中遇到事实无法查清或查清事实所需成本过高的情况,依照有利于被告的原则判决。
    根据上述定义,下列表现符合该原则的是:
    正确答案: C 你的答案: C (正确)
    检察机关认为被告人犯罪情节显著轻微,决定免予起诉
    法院在认定被告人犯有数罪或一罪之间存在疑问时,发回公安机关补充侦查
    因缺少直接证据证实被告人有罪,法院对被告人做出无罪判决
    无法确信某犯罪行为是否超过追诉时效时,应当追诉
  2. 考古:文物:博物馆
    正确答案: D 你的答案: B (错误)
    培训:员工:社会
    耕种:庄稼:土地
    贸易:商品:工厂
    教育:人才:企业
  3. 最近一项调查显示,近年来在某市高收入人群中,本地人占70%以上,这充分说明外地人在该市获得高收入相当困难。
    以下哪项如果为真,才能支持上述结论?
    正确答案: A 你的答案: D (错误)
    外地人占该市总人口的比例高达40%
    外地人占该市总人口的比例不足30%
    该市中低收入人群中,外地人占40%
    该市中低收入人群中,本地人占不足30%
  4. 在区间[-3, 3]里任取两个实数,它们的和>2的概率是( )
    正确答案: B 你的答案: A (错误)
    1/6
    2/9
    1/9
    其它
  5. 社会从众倾向是指当群体规范被成员接受以后就会成为控制和影响群体成员的手段,使成员在知觉、判断、信念和行为上表现出与群体中多数人相一致的现象。
    根据上述定义,下列情况中没有社会从众倾向的是( )。
    正确答案: A 你的答案: D (错误)
    小李因工作进度慢而被同事们责难,他只好利用业余时间加班赶上
    学生小李认为张老师对自己的期望值太高了,但一想老师就是老师,他表面上还是接受了
    春节放长假,小王准备假期旅游,但看到同事们都打算回家团聚也决定先回家团聚
    刘先生在旅游时看到有几个游客自觉地收集垃圾保护环境,心里很赞赏,但自己却不好意思做

编程题

  • LeetCode1道
  • 剑指 Offer 62. 圆圈中最后剩下的数字
    0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。
    例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。

方法一:数学 + 递归
思路

题目中的要求可以表述为:给定一个长度为 n 的序列,每次向后数 m 个元素并删除,那么最终留下的是第几个元素?

这个问题很难快速给出答案。但是同时也要看到,这个问题似乎有拆分为较小子问题的潜质:如果我们知道对于一个长度 n - 1 的序列,留下的是第几个元素,那么我们就可以由此计算出长度为 n 的序列的答案。

算法

我们将上述问题建模为函数 f(n, m),该函数的返回值为最终留下的元素的序号。

首先,长度为 n 的序列会先删除第 m % n 个元素,然后剩下一个长度为 n - 1 的序列。那么,我们可以递归地求解 f(n - 1, m),就可以知道对于剩下的 n - 1 个元素,最终会留下第几个元素,我们设答案为 x = f(n - 1, m)。

由于我们删除了第 m % n 个元素,将序列的长度变为 n - 1。当我们知道了 f(n - 1, m) 对应的答案 x 之后,我们也就可以知道,长度为 n 的序列最后一个删除的元素,应当是从 m % n 开始数的第 x 个元素。因此有 f(n, m) = (m % n + x) % n = (m + x) % n。

class Solution {
    public int lastRemaining(int n, int m) {
        return f(n, m);
    }

    public int f(int n, int m) {
        if (n == 1) {
            return 0;
        }
        int x = f(n - 1, m);
        return (m + x) % n;
    }
}

方法二:数学 + 迭代
思路与算法

上面的递归可以改写为迭代,避免递归使用栈空间。

class Solution {
    public int lastRemaining(int n, int m) {
        int f = 0;
        for (int i = 2; i != n + 1; ++i) {
            f = (m + f) % i;
        }
        return f;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值