面试手写代码的题目

本文介绍了一个简单的Java程序,用于从1到16中随机抽取不重复的数字,并将其分为四组输出。通过使用Random类和数组标记已抽取的数字来避免重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 提取出来的场景模拟:对于1–16,调用一次方法,就让他产生4个数字,调用4次完毕,产生4组不同的数字!
  • 注意:nextInt(101)是产生0-100之间的任意整数,不包括101.
    *
    完整代码:

    public class World {
    static int a[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    public static void random(){
    System.out.println(“——————–”);
    int count=0;
    Random random = new Random();
    while (true) {
    int index = random.nextInt(16);//产生下标为0-15之间!
    if (a[index] != 0) {
    count++;
    System.out.print(a[index]+” “);
    a[index] = 0;
    if (count == 4)
    break;
    }
    }
    System.out.println();

    }

    public static void main(String [] args){
    for(int i=1;i<=4;i++){
    random();
    }
    }
    }

测试输出:

3 11 2 9

16 1 7 10

12 8 13 15

4 6 5 14

前端开发面试中,手写代码题目是评估应聘者编程能力和对基础知识掌握的重要环节。以下是一些常见的算法题和 DOM 操作示例,帮助更好地准备面试。 ### 常见算法题 #### 快速排序 快速排序是一种分治排序算法,通过选择一个基准元素将数组分成两个子数组,分别进行递归排序。该方法在实际应用中非常高效。 ```javascript function quickSort(arr) { if (arr.length <= 1) return arr; const pivot = arr[Math.floor(arr.length / 2)]; const left = []; const right = []; const middle = []; for (let num of arr) { if (num < pivot) left.push(num); else if (num > pivot) right.push(num); else middle.push(num); } return [...quickSort(left), ...middle, ...quickSort(right)]; } ``` 快速排序的实现利用了递归思想,并通过基准值划分数组[^3]。 #### 查找字符串中出现次数最多的字符及其次数 这个问题考察的是基本的数据结构操作能力,例如对象的使用和遍历。 ```javascript function findMostFrequentChar(str) { let charMap = {}; let maxCount = 0; let mostFrequentChar = ''; for (let char of str) { if (charMap[char]) charMap[char]++; else charMap[char] = 1; if (charMap[char] > maxCount) { maxCount = charMap[char]; mostFrequentChar = char; } } return { char: mostFrequentChar, count: maxCount }; } ``` 这段代码通过构建字符计数字典来解决问题,最终返回出现次数最多的字符及其出现次数[^3]。 ### DOM 操作示例 #### 动态添加节点 动态添加节点是前端开发中的基础技能之一,常用于更新页面内容。 ```javascript const newElement = document.createElement('div'); newElement.textContent = '这是一个新节点'; document.body.appendChild(newElement); ``` #### 删除节点 删除特定节点的操作需要先获取目标节点,然后调用 `removeChild` 方法。 ```javascript const targetNode = document.getElementById('target'); if (targetNode && targetNode.parentNode) { targetNode.parentNode.removeChild(targetNode); } ``` #### 修改样式 直接修改 DOM 元素的样式属性可以改变其外观。 ```javascript const element = document.getElementById('myElement'); element.style.color = 'red'; element.style.fontSize = '20px'; ``` #### 事件监听 为元素添加事件监听器是实现交互功能的关键步骤。 ```javascript const button = document.getElementById('myButton'); button.addEventListener('click', function() { alert('按钮被点击了!'); }); ``` ### Vue 与 React 的区别 Vue 和 React 都是流行的前端框架/库,它们各有特点: - **双向数据绑定**:Vue 提供了内置的双向数据绑定机制,使得表单输入和组件状态之间的同步更加简便。 - **虚拟 DOM**:React 使用虚拟 DOM 来提高性能,而 Vue 也采用了类似的技术,但其实现方式有所不同。 - **学习曲线**:Vue 被认为更易于上手,特别是对于初学者而言,因为它的文档清晰且 API 设计直观;相比之下,React 可能需要更多的 JavaScript 知识,尤其是在使用高级特性时。 以上提到的内容不仅涵盖了算法实现,还包括了实际项目中常用的 DOM 操作技巧以及主流框架的基本概念。应聘者应结合理论知识与实践操作,以全面提升自己的技术水平[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值