JAVA(其他5)

JAVA
面试知识点整理

Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。

公司用到的工具
metabase 报表系统
xxl-job 定时任务
CrapApi开源接口管理系统
vmware -管理服务器
Jenkins
git
harbor:镜像仓库
rancher:k8s管理界面
jira 管理项目需求跟bug进度
confluence 项目测试环境生产环境发布公告管理

项目打包用的工具
 git:代码仓库
 Jenkins:持续集成工具
 harbor:镜像仓库
 k8s:集群部署环境
 rancher:k8s管理界面

打包流程步骤
yml文件中配置持续集成步骤eg:去git拉代码->打包成镜像->将镜像推送到harbor仓库中->在k8s中拉起新生成的镜像,
这样一个基本的持续集成链就完成了

java14的新特性
NullPointerException会具体提出那个属性为空
Record 用在类对象里面省去get ,set,tostring代码
instanceof 转换二行换成一行代码
html 文本块="""用三个只需使用三引号作为文本块的起始和结束标记,就能编写出更优雅的代码:
Switch表达式新的switch表达式的优点是,不再有缺省跳过行为(fall-through),
更全面,而且表达式和组合形式更容易编写,因此出现bug的可能性就更低。例如,switch表达式现在可以使用箭头语法

jdk1.8新特性
Lambda表达式
函数式接口
方法引用和构造器调用
Stream API
接口中的默认方法和静态方法
新时间日期API

Collection(单列集合)
一、List(有序,可重复)
ArrayList
底层数据结构是数组,查询快,增删慢
线程不安全,效率高

Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低

LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
CopyOnWriteArrayList
线程安全,效率高
适用于读多写少

二、Set(无序,唯一)
HashSet
底层数据结构是哈希表。
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可

LinkedHashSet(HashSet的子类)
底层数据结构由链表和哈希表组成。
由链表保证元素有序。
由哈希表保证元素唯一。

TreeSet
底层数据结构是红黑树。(是一种自平衡的二叉树)
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定
如何保证元素的排序呢?
两种方式
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象

Map(双列集合)
A:Map集合的数据结构仅仅针对键有效,与值无关。
B:存储的是键值对形式的元素,键唯一,值可重复。

HashMap
底层数据结构是哈希表。线程不安全,效率高
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可

LinkedHashMap(HashMap子类)
底层数据结构由链表和哈希表组成。
由链表保证元素有序。
由哈希表保证元素唯一。

Hashtable
底层数据结构是哈希表。线程安全,效率低
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可

TreeMap
底层数据结构是红黑树。(是一种自平衡的二叉树)
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定
如何保证元素的排序呢?
两种方式
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator

1:多线程三个方法是?
继承thread类,或者实现Runnable,实现Callable接口带有返回值的;

2:Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有哪三种?
构造方法注入
setter注入
基于注解的注入

3:Spring MVC的核心组件:
DispatcherServlet:中央控制器,把请求给转发到具体的控制类
Controller:具体处理请求的控制器
HandlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略
ModelAndView:服务层返回的数据和视图层的封装类
ViewResolver:视图解析器,解析具体的视图
Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作

4:什么时候行锁升级为表锁?
以没有索引的为条件更新数据就是表锁;
修改的条件转换类型

5:spring cloud 的核心组件有哪些?
服务发现——Netflix Eureka
客服端负载均衡——Netflix Ribbon
断路器——Netflix Hystrix
服务网关——Netflix Zuul-也叫路由,跟gateaway
分布式配置——Spring Cloud Config

6:开发中经常用到的java数据结构有哪些?
collection (set,list )map hashMap

7:spring mvc常用4个基本注解
@Component、@Repository 、@Service、@Controller
@Controller 控制层 ,通常我们所说的action层
@Service 业务逻辑层,通常我们所说的service层或者manger层
@Repository 持久层,通常我们所说的Dao层
@Component 组件,书面意思就是我们不知道在哪一层时使用

8:jVM垃圾回收算法
垃圾回收算法可以分为三类,都基于标记-清除(复制)算法:
Serial算法(单线程)
并行算法
并发算法

9:spring cloud 运行流程
1、外部或者内部的非spring cloud项目都先通网关zuul然后从eureka server中获取可用列表服务。

2、从eureka server注册中心返回可用实例。

3、通过ribbon负载均衡分配可用节点。

4、ribbon选择可用的节点分配到后端具体的实例

5、hystrix断路器查看当前实例是否可用,dashboard监控实例状态信息,Turbine监控服务间的调用和熔断相关指标。

6、后端服务与服务之间都是通过feign通信,处理请求业务后返回到Eureka中心返回结果。

10:我们项目用的分布式事务?
2PC

11:Eureka、Zookeeper和Consul 的区别?
Zookeeper和Consul :CP设计,保证了一致性,集群搭建的时候,某个节点失效,则会进行选举行的leader,或者半数以上节点不可用,则无法提供服务,因此可用性没法满足
Eureka:AP原则,无主从节点,一个节点挂了,自动切换其他节点可以使用,去中心化

如果要求一致性,则选择zookeeper、Consul,如金融行业 
如果要去可用性,则Eureka,如电商系统

CAP定理:指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可同时获得。

12:如何保证微服务接口的幂等性?
用全局唯一ID,就是根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行
利用Redis的原子性实现
去重表-唯一索引这时就可以使用InsertOrUpdate操作,多版本控制-version,状态机控制-比如订单的创建为0,付款成功为100。付款失败为99
https://blog.csdn.net/sanyuedexuanlv/article/details/88373083

13:Spring Bean的生命周期
实例化 Instantiation
属性赋值 Populate
初始化 Initialization
销毁 Destruction

14:Redis和mysql数据怎么保持数据一致的?
第一种方案:采用延时双删策略
1)先删除缓存

	2)再写数据库

	3)休眠500毫秒

	4)再次删除缓存
第二种方案:异步更新缓存(基于订阅binlog的同步机制)
	其实这种机制,很类似MySQL的主从备份机制,因为MySQL的主备也是通过binlog来实现的数据一致性

15:map中是如何解决hashcode冲突的
链表,

16:hashmap7于8的区别
1:已经提到jdk7使用的是数组+链表来实现,而jdk8使用数组+链表+红黑树实现
2:hash算法简化
3:新节点插入顺序:jdk7在头部插入,jdk8在尾部插入
4:扩容机制:map7是当前数据存储的数量(即size())大小必须大于等于阈值;当前加入的数据是否发生了hash冲突。
map8:当前存放新值的时候已有元素的个数大于等于阈值满足这一个就好,

17:在jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。

18:如何保证mq消息的幂等性?
用全局唯一ID,就是根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行
利用Redis的原子性实现

19:如何解决消息丢失的问题?
即在消息过期,队列满了,消息被拒绝的时候,都可以扔给死信队列。

20:mq如何解决消息堆积问题?
1:采用mq内部的方式去增大消费者的速度。因此我们需要知道两个参数属性:
1、concurrentConsumers
2、prefetchCount
2:可以通过设置并发消费提高消费的速率,从而减少消息堆积的问题

21:mq是如何解决分布式事物问题?
通过监听mq消息

22:分库,分表后连表查询的问题解决方案
方案一:利用union,union all
方案二:建一张主表将你要连表查询的字段放在其中,做好索引;你还记录下用户经常查询的条件,把查出的数据缓存,以便用户经常调用。
方案三:
我们可以把经常要用到的数据写到cache中,这样以后要获取的时候直接到cache里拿。比如一天更新一次的情况(像德问的排名就是这样),我们可以写个cron,每天更新一次。
方案四:多线程处理各个分表

23:b树跟B+树的区别?
1。B树中同bai一键值不会出现多次,并且du它有可能出现在叶结点zhi,也有可能出现在非叶结点中。而B+树的键一定会出现在叶结点中,并且有可能在非叶结点中也有可能重复出现,以维持B+树的平衡。
2。因为B树键位置不定,且在整个树结构中只出现一次,虽然可以节省存储空间,但使得在插入、删除操作复杂度明显增加。B+树相比来说是一种较好的折中。
3。B树的查询效率与键在树中的位置有关,最大时间复杂度与B+树相同(在叶结点的时候),最小时间复杂度为1(在根结点的时候)。而B+树的时候复杂度对某建成的树是固定的

24:kafka 有几种数据保留的策略?
kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。

25:zookeeper 有几种部署模式?
zookeeper 有三种部署模式:
单机部署:一台集群上运行;
集群部署:多台集群运行;
伪集群部署:一台集群启动多个 zookeeper 实例运行。

26:zab 协议有两种模式,分别是恢复模式(选主)和广播模式(同步)。

27:数据库中char 和 varchar 的区别是什么?
chat 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。
varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。

28:说一下 mysql 的行锁和表锁?
MyISAM 只支持表锁,InnoDB 支持表锁和行锁,默认为行锁。
表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低。
行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高。

29:如何做 mysql 的性能优化?
为搜索字段创建索引。
避免使用 select *,列出需要查询的字段。
垂直分割分表。
选择正确的存储引擎

30: redis 和 memecache 有什么区别?
memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
redis的速度比memcached快很多
redis可以持久化其数据

31:redis 为什么是单线程的?
因为 cpu 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是机器内存或者网络带宽。既然单线程容易实现,而且 cpu 又不会成为瓶颈,那就顺理成章地采用单线程的方案了

32:什么是缓存穿透?怎么解决?
缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。
解决方案:最简单粗暴的方法如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们就把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟

33:redis 支持的 java 客户端都有哪些?
Redisson、Jedis、lettuce等等,官方推荐使用Redisson

34: jedis 和 redisson 有哪些区别?
Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。
Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

35:redis 持久化有几种方式?
Redis 的持久化有两种方式,或者说有两种策略:
RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储。
AOF(Append Only File):每一个收到的写命令都通过write函数追加到文件中。

36:redis 怎么实现分布式锁?
Redis 分布式锁其实就是在系统里面占一个“坑”,其他程序也要占“坑”的时候,占用成功了就可以继续执行,失败了就只能放弃或稍后重试。
占坑一般使用 setnx(set if not exists)指令,只允许被一个程序占有,使用完调用 del 释放锁。

37:redis 分布式锁有什么缺陷?
Redis 分布式锁不能解决超时的问题,分布式锁有一个超时时间,程序的执行如果超出了锁的超时时间就会出现问题。

38:redis 如何做内存优化?
尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。
比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面

39: redis 常见的性能问题有哪些?该如何解决?
主服务器写内存快照,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以主服务器最好不要写内存快照。
Redis 主从复制的性能问题,为了主从复制的速度和连接的稳定性,主从库最好在同一个局域网内。

40:说一下 jvm 的主要组成部分?及其作用?
类加载器(ClassLoader)
运行时数据区(Runtime Data Area)
执行引擎(Execution Engine)
本地库接口(Native Interface)
组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中,而字节码文件只是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。

41: 说一下 jvm 运行时数据区?
程序计数器
虚拟机栈
本地方法栈

方法区

42:说一下堆栈的区别?
栈内存存储的是局部变量而堆内存存储的是对象;

43:什么是双亲委派模型?
双亲委派模型:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完成,每一层的类加载器都是如此,这样所有的加载请求都会被传送到顶层的启动类加载器中,只有当父加载无法完成加载请求(它的搜索范围中没找到所需的类)时,子加载器才会尝试去加载类。

44:double为何会丢失精度?怎么解决这个?
float和double类型主要是为科学计算和工程计算而设计的。它们执行二进制浮点运算,这些运算经过精心设计,能够在广泛的数值范围内提供更精确的快速近似和计算而精心设计的。但是,它们不能提供完全准确的结果,因此不能用于需要计算精确结果的场景中。当浮点数达到一定的大数时自动使用科学计数法。这样的表示只是近似真实数而不等于真实数。当十进制小数转换为二进制时,也会出现无限循环或超出浮点数尾部的长度。
BigDecimal在处理的时候把十进制小数扩大N倍让它在整数上进行计算,并保留相应的精度信息

45:数据库查询一天的数据怎么处理 ?( 几百G数据)
表数据进行分区处理
格式为:partition by range (order_date)
(
partition ord_act_part01 values less than (to_date(‘01- may -2003’,‘dd-mon-yyyy’)) tablespaceord_ts01,
)

46:项目线程安全怎么处理的?
使用分布式锁,有redission跟redis的setnx

47:spring cloud接口调用超时熔断配置?
isolation:
thread:
timeoutInMilliseconds: 4000

48:sql中between end走不走索引?
查询数量少走索引,当查询的数量打就不走索引;

49:红黑树原理是啥,添加删除之后怎么保持红黑树的?
红黑树是一种自平衡二叉查找树,每个结点是黑色或者红色,根结点是黑色,如果一个结点是红色的,则它的子结点必须是黑色的。
添加或删除红黑树中的结点之后,红黑树的结构就发生了变化,可能不满足红黑树的5条性质,也就不再是一颗红黑树了,而是一颗普通的树。而通过旋转和变色,可以使这颗树重新成为红黑树

50:sql中like查询是否使用索引?
LIKE以%开头会导致索引失效;使用覆盖索引解决之(查询结果字段必须在索引列中)

51:互联网跨域问题解决方案?
Jsonp
nginx将A应用和B应用都通过一个统一的地址进行转发
请求头加跨域Access-Control-Allow-*
httpClient
nginx中也加请求头跨域Access-Control-Allow-*
微服务的网管地址转发
网管里面也要请求头Access-Control-Allow-*
添加注解@CrossOrigin

52:ngixn有哪些作用?
反向代理
负载均衡
服务器请求限流
黑名单、白名单
HTTP服务器(动静分离),正向代理

53:服务器集群会有那些问题?
Session不一致问题-
通过spring session缓存到redis里面,通token代替session,
分布式锁问题-
通过zookeeper分布式锁,
基于redis setnx,这种方式它是有缺点的不推荐的,代码复杂,他很容易产生死锁现象的
springCloud里面,对redisson,他实现分布式锁,确实比较不错,完全可以和zookeeper进行匹配了

分布式调度平台job幂等性
通过XXL——job
分布式日志收集问题
通过elk,kafka

54:tomcat服务器宕机解决方案?
负载均衡的问题转移,
Keepalived 心跳监听,然后自动重启,一直失败可以发送邮件通知

.

.第一题
[编程题|平均分55.9分|14人正确/143人做题|提交4次]得分:171.4 / 200.0
标题:德州扑克 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
五张牌,每张牌由牌大小和花色组成,牌大小2~10、J、Q、K、A,牌花色为红桃、黑桃、梅花、方块四种花色之一。 判断牌型:
牌型1,同花顺:同一花色的顺子,如红桃2红桃3红桃4红桃5红桃6。
牌型2,四条:四张相同数字 + 单张,如红桃A黑桃A梅花A方块A + 黑桃K。
牌型3,葫芦:三张相同数字 + 一对,如红桃5黑桃5梅花5 + 方块9梅花9。
牌型4,同花:同一花色,如方块3方块7方块10方块J方块Q。
牌型5,顺子:花色不一样的顺子,如红桃2黑桃3红桃4红桃5方块6。
牌型6,三条:三张相同 + 两张单。
牌型7,其他。
说明:
1)五张牌里不会出现牌大小和花色完全相同的牌。
2)前面的牌型比后面的牌型大,如同花顺比四条大,依次类推。
收起
输入描述:
输入由5行组成
每行为一张牌大小和花色,牌大小为2~10、J、Q、K、A,花色分别用字符H、S、C、D表示红桃、黑桃、梅花、方块。
输出描述:
输出牌型序号,5张牌符合多种牌型时,取最大的牌型序号输出

第二题
[编程题|平均分124.2分|47人正确/121人做题|提交2次]得分:0.0 / 200.0
标题:文本逐词反转 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
输入一个字符串,对其进行逐词的反转后,然后返回。 比如:
输入:“the sky is blue”
输出:“blue is sky the”
注意: 1)“词”是指:任何不含空格的连续字符串
2)输入字符串可以有首尾空格,但是返回的字符串不能有首尾空格
3)输入字符串中两个词之间可以有多个空格,但是返回的字符串中词只能用单个空格隔开
收起
输入描述:
函数原型:void ReverseWords(char *s);
输入与输出均为s。
输出描述:
输入与输出均为s。

第三题
编程题|平均分68.2分|5人正确/17人做题|提交4次]得分:0.0 / 200.0
标题:七进制加法 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
将两个无符号的七进制数进行相加,输出也是七进制
收起
输入描述:
两个数用单个空格分开。输入字符串只包含’0’-‘6’及空格’ ‘。七进制数位长不超过11.
输出描述:
C字符串,包含字符’0’-‘6’

第四题
[编程题|平均分20.0分|2人正确/2人做题|提交3次]得分:20.0 / 20.0
标题:简易图形绘制工具(二) | 时间限制:1秒 | 内存限制:262144K | 语言限制:C++、Java、C#、Javascript、Javascript_V8、C++14
1
2
3
4
5
6
7
8
9
设计一个基本的图形绘制引擎,这个引擎可以在canvas上画shape:

  1. 绘制矩形,椭圆,线三种图形
    “r”:矩形,“e”:椭圆,“l”:线
    所有形状都有四个属性: x,y,width,height
  2. 有5种基本操作可以做,命令行分别为:
    //“N”[代表创建新形状],“r,e,l”[形状类型:rect,ellipse,line], 100[x],100[y], 50[width],60[height]
    //“D”[代表删除形状],0[代表已有第几个shape,数组从0开始]
    //“U”[代表撤销操作undo]
    //“R”[代表重新操作redo]

收起
输入描述:
N,r,100,100,50,50,N,e,200,200,50,60,N,l,300,300,100,100,D,0,U,R
输出描述:
[{“type”:“rect”,“x”:100,“y”:100,“width”:50,“height”:50},{“type”:“ellipse”,“x”:200,“y”:200,“width”:50,“height”:60},{“type”:“line”,“x”:300,“y”:300,“width”:100,“height”:100}]

第五题
[编程题|平均分84.0分|6人正确/40人做题|提交8次]得分:200.0 / 200.0
标题:找字符串中出现次数最多的字符 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
给定一个长度不限的字符串,请找出该字符串中出现次数最多的那个字符,并打印出该字符及其出现次数; 如果多个字符的出现次数相同,只打印首个字符; 输出字符的大小写格式要与输入保持一致,大小写不敏感模式下,输出字符的大小写格式与该字符首次出现时的大小写格式一致。 实现时无需考虑非法输入。
收起
输入描述:
输入为:
字符串 大小写敏感标记
其中"大小写敏感标记"为可选参数,取值范围为true | false,true表示大小写敏感;缺省取值true。

例子:abcdABCdE false
输出描述:
输出:字符 出现次数
如果出现次数最多的字符有多个,输出字典序最小的那个字符。输出的字符都为小写字符
例子:a 2

第六题
编程题|平均分37.7分|9人正确/121人做题|提交5次]得分:0.0 / 200.0
标题:数据分类 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
对一个数据a进行分类,分类方法为:此数据a(四个字节大小)的四个字节相加%一个给定的值b,如果得到的结果小于一个给定的值c,则此结果即为数据a的类型;如果得到的结果大于或者等于c,则此结果无效即为数据a的类型无效。比如一个数据a=0x01010101,b=3,按照分类方法计算(0x01+0x01+0x01+0x01)%3=1,所以如果c=2,则此a的类型是1,如果c=1,则此a的类型是无效。输入12个数据,第一个数据为c,第二个数据为b,剩余10个数据为需要分类的数据a。计算数据最多的类型(有效类型)有多少个数据。
收起
输入描述:
输入12个数据,第一个数据为c,第二个数据为b,剩余10个数据为需要分类的数据a。
输出描述:
计算数据最多的类型(有效类型)有多少个数据。

第七题
[编程题|平均分101.7分|37人正确/131人做题|提交17次]得分:120.0 / 200.0
标题:消除重复数字 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
给定一个正整数,给出消除重复数字以后最大的整数
收起
输入描述:
正整数,注意考虑长整数
输出描述:
消除重复数字以后的最大整数

第八题
[编程题|平均分53.8分|1人正确/16人做题|提交5次]得分:40.0 / 200.0
标题:数字排列 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
小明负责公司年会,想出一个趣味游戏:
屏幕给出1~9中任意3个不重复的数字,大家以最快时间给出这几个数字可拼成的数字从小到大排列位于第N位置的数字,其中N为给出的数字中最大的(如果不到这么多个数字则给出最后一个即可),谁最快给出谁得奖。
注意:
1)屏幕如果给的是“2”,大家可把它当作“2”,也可把它当作“5”来拼接数字;同理,如果屏幕给的是“5”,大家可把它当作“5”,也可把它当作“2”来拼接数字,但屏幕不能同时给出2与5。
2)屏幕如果给的是“6”,大家可把它当作“6”,也可把它当作“9”来拼接数字;同理,如果屏幕给的是“9”,大家可把它当作“9”,也可把它当作“6”来拼接数字,但屏幕不能同时给出6与9。
现在要编写一个小程序,根据给出的数字计算出能组合的所有数字以及最终的正确答案。
如:给出:1,4,8,则可以拼成的数字为:
1,4,8,14,18,41,48,81,84,148,184,418,481,814,841
那么最第N(即8)个的数字为81.
收起
输入描述:
以逗号分隔的描述3个int类型整数的字符串。
输出描述:
这几个数字可拼成的数字从小到大排列位于第N(N为输入数字中最大的数字)位置的数字,如果输入的数字为负数或者是不合法的字符串或者有重复,返回-1。

第九题
标题:找字符串中出现次数最多的字符 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
给定一个长度不限的字符串,请找出该字符串中出现次数最多的那个字符,并打印出该字符及其出现次数; 如果多个字符的出现次数相同,只打印首个字符; 输出字符的大小写格式要与输入保持一致,大小写不敏感模式下,输出字符的大小写格式与该字符首次出现时的大小写格式一致。 实现时无需考虑非法输入。
收起
输入描述:
输入为:
字符串 大小写敏感标记
其中"大小写敏感标记"为可选参数,取值范围为true | false,true表示大小写敏感;缺省取值true。

例子:abcdABCdE false
输出描述:
输出:字符 出现次数
如果出现次数最多的字符有多个,输出字典序最小的那个字符。输出的字符都为小写字符
例子:a 2
示例1

第十题
[编程题|平均分37.7分|9人正确/121人做题|提交9次]得分:0.0 / 200.0
标题:数据分类 | 时间限制:3秒 | 内存限制:32768K | 语言限制:不限
对一个数据a进行分类,分类方法为:此数据a(四个字节大小)的四个字节相加%一个给定的值b,如果得到的结果小于一个给定的值c,则此结果即为数据a的类型;如果得到的结果大于或者等于c,则此结果无效即为数据a的类型无效。比如一个数据a=0x01010101,b=3,按照分类方法计算(0x01+0x01+0x01+0x01)%3=1,所以如果c=2,则此a的类型是1,如果c=1,则此a的类型是无效。输入12个数据,第一个数据为c,第二个数据为b,剩余10个数据为需要分类的数据a。计算数据最多的类型(有效类型)有多少个数据。
收起
输入描述:
输入12个数据,第一个数据为c,第二个数据为b,剩余10个数据为需要分类的数据a。
输出描述:
计算数据最多的类型(有效类型)有多少个数据。
示例1
输入
5、2、1、2、3、4、5、6、7、8、9、10
输出
5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值