A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黄埔训练营JavaSE进阶期中考试
入学8天首次考试,竟要手写源码
JavaSE进阶期中考试
第一题 (10分)
需求
目前有100名囚犯,每个囚犯的编号是1-200之间的随机数。现在要求依次随机生成100名囚犯的编号(要求这些囚犯的编号是不能重复的),然后让他们依次站成一排。(注:位置是从1开始计数的),接下来,国王命令手下先干掉全部奇数位置处的人。剩下的人,又从新按位置1开始,再次干掉全部奇数位置处的人,依此类推,直到最后剩下一个人为止,剩下的这个人为幸存者。
具体功能点的要求如下:
请输出幸存者的编号,以及他第一次所占的位置值是多少。
第二题 (14分)
需求
User 实体类,包含如下属性 :
private Long id;  // 用户id 名
private String gender;  //性别
private LocalDate birthday;  //生日
注意需要提供 set和get方法,以及toString方法
新建测试类,类中 main 方法,在方法中完成如下业务逻辑:
具体功能点的要求如下:
业务一:
字符串中的规则如下,多个用户用 # 拼接,用户的信息之间用 : 拼接。
其中用户id和生日是需要进行类型转换的,其中id需要将String转成Long,生日需要将String转成LocalDate
有如下字符串,里面包含多个用户信息数据,现在需要你解析这个字符串,获取里面的用户数据,并封装到User对象中
多个User对象在添加到List<User> 集合中
String userStrs = "10001:张三:男:1990-01-01#10002:李四:女:1989-01-09#10003:王五:男:1999-09-09#10004:刘备:男:1899-01-01#10005:孙悟空:男:1900-01-01#10006:张三:女:1999-01-01#10007:刘备:女:1999-01-01#10008:张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";
注意:
字符串中的规则如下,多个用户用 # 拼接,用户的信息之间用 : 拼接。
其中用户id和生日是需要进行类型转换的,其中id需要将String转成Long,生日需要将String转成LocalDate
业务二:
张三:3次
李四:5次
遍历上面获取的List<User> 集合,统计里面每个名字出现的次数。
封装到Map<String,Integer>集合中,集合的key就是名字,value就是名字出现的次数。
最后遍历打印map数据,打印内容如下:
张三:3次
李四:5次
第三题 (16分)
需求
某护士小花,作息规律为上二天班,休息一天,经常不确定休息日是否是周末(注:首次休息日是2022年2月3日)。
具体功能点的要求如下:
1、请你开发一个程序,当小花输入年以及月后,立即显示出该月份的休息日详情。
示范(注意:示范信息重点在于参考格式,结果不一定是准确的,请自行确保计算结果正确性):
请小花输入查询的月份(月份必须是2022年2月之后的月份):2023-5 。
2023-5-1[休息]   2023-5-2   2023-5-3  2023-5-4[休息] ...
2、显示出该月份哪些休息日是周六或周日(请依次列出具体的日期和其星期信息)。
3、小花给自己设置了一个高考倒计时。高考的开始时间为:2023年06月07日 上午9:00 。请利用给的素材代码(在Timer文件夹下),补全代码,产生一个如下的倒计时效果,倒计时格式如下图所示

第四题 (22分)
题目
ArrayList集合是很重要的一种集合,请手工书写一个MyArrayList集合模拟ArrayList集合。
具体功能点的要求如下
1、MyArrayList需要支持泛型,内部使用数组作为容器。
2、在MyArrayList中开发add方法,用于添加数据的,需要遵循ArrayList的扩容机制(自行设计代码,不需要与ArrayList的源代码一样,思想一致即可)
3、在MyArrayList中开发根据索引查询数据的get方法。
4、在MyArrayList中开发根据索引删除数据的remove方法。
5、在MyArrayList中开发一个获取集合大小的size()方法。
6、能够在MyArrayList集合中开发一个forEach方法,这个方法支持使用Lambda进行遍历,至于函数式接口叫什么名称无所谓。
7、编写测试用例对自己编写的MyArrayList集合进行功能正确性测试。
第五题 (16分)
题目
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
注意:必须确保程序的时间复杂度是o(log2n),否则不给分数
具体功能点的要求如下
数组 nums = [5,7,7,8,8,10], target = 8
得到结果是:[3,4]
数组:nums = [5,7,7,8,8,10], target = 6
得到结果是:[-1,-1]
数组:nums = [], target = 0
得到结果是:[-1,-1]
请设计一个方法完成以上需求,并编写测试代码完成上述测试。
第六题 (22分)
题目
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,并返回 反转后的链表 。
示例 1:
比如 head 指向的链表内容大致是 1,2,3,4,5 , left = 2, right = 4
反转后的链表就是 1,4,3,2,5
如果链表只有一个节点:head指向的是 5  ,left = 1, right = 1
反转后的链表就还是 5
具体功能点的要求如下
1、设计一个Node泛型类,用于代表链表的结点。每个结点包含(数据data,和下一个结点的地址值next)2、开发一个类叫MyLinkedList,提供一个add方法可以让用户添加链表的结点,直到用户输入exit,则返回链表(返回链表实际上是返回链表的头结点)
3、提供一个reverse方法,接收头指针 head 和两个整数 left 和 right ,其中 left <= right,按上面的要求进行反转。反转后,返回新的链表
4、提供一个forEach方法,接收新链表,并对其进行遍历输出。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马