南昌哈里科技有限公司
面试题
适用对象:新手程序
一、基础题目(不允许上网查询):
Java:
- 如何将String 类型转化为 Integer 类型?
用Integer类中的Valueof()方法实现
String zsh = “zsh”;
Integer i = Integer.valueOf(zsh);
- String 和 StringBuffer 的区别
String是引用类型,底层是被final修饰的字符数组,所以String相当于一个常量,是不可改变的,每拼接一次就会产生一个新的对象,而由于垃圾回收机制的原理,原有的对象不会立马被回收,这是对内存极大的消耗;而StringBuffer 是可变长度的,可以利用append方法向原有对象拼接,然后用toString方法将其转化为String类型;
- String[] 如何优雅的判定其中是否包含字符串“aa”
String[] strArr = {“aa”, ”bb”,“cc”};
boolean res = Arrays.asList(strArr).contains(“aa”)
- java多线程同时读写如何处理赃数据,请用java写出最基本的程序
使用synchronized关键字和使用锁
- 控制台编程:用擅长的语言,读取屏蔽词库forbidenkeys.txt,并判断从控制台输入的任意字符串是否包含屏蔽词
Path path=Paths.get("C:\\forbidenkeys.txt");
byte[] data = Files.readAllBytes(path);
String result = new String(data,"utf-8");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
if (result.contains(str)){
System.out.println("输入关键字包含屏蔽词");
}
- 矩形碰撞检测: 定义两个二维的矩形结构体,和一个二维点point,检测二维点落在哪个矩形当中,如何计算两个矩形中心点的距离,如何判断两个矩形是否相交。
- 射线检测: 定义一条二维射线和一个二维矩形,判断二维射线是否和矩形产生碰撞
二、算法题目(不允许上网查询):
【2.3~2.5】选做一题,能全做完当然更好。
2.1. [9,20,50,21,5,7,3,0,-40,10,99,555,90000,555,23312389433],冒泡法从小到大排序
2.2. [9,20,50,21,5,7,3,0,-40,10,99,555,90000,555,23312389433],快速排序法从小到大排序
2.3. 迷宫寻路:设计一张10*10的二维地图数组,其中0代表道路,1代表墙,3代表入口,4代表出口,其中3入口和4出口的位置可以随意设置。写一个寻路算法,计算从入口到出口的最短路径。
参考:
1111311111
100001111
。。。。。
1111111411
2.4. 武将大乱斗:自行设计数据结构,和程序,打印战斗过程和结果。
我方 关羽:
Hp 2000,
攻击力200,
防御力100,
速度 200,
兵种:骑兵,
技能:青囊经(恢复50~100hp),冲锋(造成200~400伤害)
掉落:青囊经(20%掉率)、青龙偃月刀(10%掉率)
敌方 庞德:
Hp 2000,
攻击力200,
防御力100,
速度 100,
兵种:盾兵,
技能:穿山枪(造成200~400伤害),防御(减少伤害10%)
掉落:神盾(20%掉率)、天罡剑(10%掉率)
兵种克制:骑兵会对盾兵多造成15~30%的伤害
技能发动几率:每回合30%
速度越快,越早发动攻击,比如关羽和庞德战斗,关羽先发动攻击,如果战斗持续9回合,关羽攻击庞德6次,庞德攻击关羽3次。自行拟定速度计时器。
参考:
我方关羽入场(hp 2000),敌方庞德入场(hp 2000)
回合1: 关羽 对 庞德 发动普通攻击,庞德损失100hp
回合2: 庞德 对 关羽 使用技能【穿山枪】,关羽损失200hp
回合3: 关羽 对 自身 使用技能 【青囊经】,关羽恢复200hp
回合4: 关羽 对 庞德 使用技能 【冲锋】,庞德损失500hp
.....
关羽经过【15】回合击败庞德,获得经验1000,获得武器【天罡剑】
2.5. 梭哈扑克基础算法:一副标准扑克牌,自定义数据结构, 剔去其中大王小王,进行洗牌、发牌给2个人每人5张、判断牌型,比较大小。
剔牌:removeCards 删除指定牌序号
洗牌:shuffleCards
发牌:dealCards
牌型:getCardsType
同花顺>四条>满堂红>同花>顺子>三条>二对>单对>散牌
散牌 0 , 单对 1,二对 2,三条 3, 。。。。牌型返回参数
比较大小:compareCards,判断哪个玩家手上牌最大
参考:https://baike.baidu.com/item/%E6%A2%AD%E5%93%88/86652?fr=aladdin
牌型比较:同花顺>四条>满堂红>同花>顺子>三条>二对>单对>散牌
数字比较:A>K>Q>J>10>9>8 >7>6>5>4>3>2
花式比较:黑桃>红桃>草花>方块
若牌型一样则利用数字和花色决定胜负。(数字优先)
数字的顺序(大至小)为: A,K,Q,J,10,9,8
花色的顺序(大至小)为: 黑桃 > 红心 > 梅花 > 方块
- 进阶题目(自行询问wifi上网查询解决方法):
3.1. 参考 武将数据表hurui计算.xlsx,利用excel表中的数据,推算参数1、参数2、参数3、参数4