当前位置:首页>开发>正文

java面试题 java 面试题

2023-07-15 19:08:42 互联网 未知 开发

 java面试题 java 面试题

java面试题

第一题,用一个ArrayList存储1到100
然后随机产生0到arraylist.size()之间的数字作为下标
然后从arraylist中remove掉刚产生的那个下标的数存到数组中,直到arraylist中的size为0即可,这样就不用去判断浪费大量时间,用set的话虽然表面上没做判断,实际上也是判断过的


public class Rand {
public static void main(String[] args) {
int[] fill = new int[100]
List<Integer> list = new ArrayList<Integer>()
for(int i=1 i<=100 i ) {
list.add(i)
}

Random random = new Random()
for(int i=0 i<fill.length i ) {
fill[i] = list.remove(random.nextInt(list.size()))
}

for(int i=0 i<fill.length i ) {
System.out.print(fill[i] " ")
}
}
}


第二题可以考虑RandomAccessFile类
其他类也有追加的方法好像,构造方法中有一个参数问是不是需要追加

java 面试题

字符串反转
public String reset(String message)
{
StringBuffer buffer=new StringBuffer()
for (int i = message.length()-1 i >=0 i--) {
buffer.append(message.substring(i, i 1))
}
return buffer.toString()
}

/*
* message 字符串
*oldchar 要被替换的字符
* newChar 用来替换的字符
* */
public String test(String message,String oldchar,String newChar)
{
if(message.indexOf(oldchar)!=-1)
{
message=message.replace(oldchar, newChar)
}
return message
}

JAVA面试题目

一、抽象策略角色:

public interface SuperCash {
public double acceptCash()
}
二、具体策略角色:
   a..策略角色1(普通时间)
  public class NormalCash implements SuperCash{
@Override
public double acceptCash() {
return 0.2
}
}
 b.策略角色2(5-8点)
  public class MorningCash implements SuperCash{
@Override
public double acceptCash() {
return 0.4
}
}
      c.策略角色3(7-9点)

public class ForenoonCash implements SuperCash{
@Override
public double acceptCash() {
return 0.3
}
}
三、环境角色

public class CashContext {
SuperCash superCash = null
public CashContext(int time) {
if(time>=5&&time<=8){
superCash = newMorningCash()//策略}else if(time>=7&&time<=9){
superCash = newForenoonCash()//策略}else{
superCash = newNormalCash()//策略}
}

public double getResult() {
return this.superCash.acceptCash()
}
}
四、测试

CashContext context = new CashContext(8)
System.out.println("(策略模式)the result:" context.getResult())
输出:0.3

java 面试题

可以查看一下hashMap的API啊,那里说的很细致:
注意,此实现不是同步的。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的任何操作;仅改变与实例已经包含的键关联的值不是结构上的修改。)这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap 方法来“包装”该映射。最好在创建时完成这一操作,以防止对映射进行意外的非同步访问,如下所示:

Map m = Collections.synchronizedMap(new HashMap(...))由所有此类的“collection 视图方法”所返回的迭代器都是快速失败 的:在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器本身的 remove 方法,其他任何时间任何方式的修改,迭代器都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒在将来不确定的时间发生任意不确定行为的风险。

注意,迭代器的快速失败行为不能得到保证,一般来说,存在非同步的并发修改时,不可能作出任何坚决的保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的程序的做法是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测程序错误。

此类是 Java Collections Framework 的成员。