谈谈 面试 统计单词出现次数(key => value) 那点事

本文通过JavaScript实现统计字符串中每个字符出现的次数,并扩展到找出第一个重复字符及出现次数最多的字符。

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

今天看到某团一个面试题
统计单词出现次数(key => value)
就唠唠 这种业务上的一点东西

设置了一个字符串来测试

  • 原题
    var str = 'adaddvadsfgtrsytreewythjnmnbv'
    因为要用key value 键值对来表示 肯定第一想到的是 对象
    var str = 'adaddvadsfgtrsytreewythjnmnbv'
    var obj = {}
    for (var i= 0; i< str.length; i++) {
      obj[str[i]] = 1 || (obj[str[i]] + 1)  
    }
    console.log(obj)  //{a: 2, b: 2, c: 2}复制代码
    上面其实很简单的 遍历每一项 1 或者 每一项 每一项的数量+1
  • 扩展1
    现在找下字符串中第一个重复的字符
    var str = 'adaddvadsfgtrsytreewythjnmnbv'
 var str = 'adaddvadsfgtrsytreewythjnmnbv'
 var obj = {}
 for (var i= 0; i< str.length; i++) {
    obj[str[i]] = 1 || (obj[str[i]] + 1)  
    if(obj[str[i]] == 2) {
        console.log(str[i]) //第一个重复的是a
        break;   //找到就退出
    }
 }
 console.log(obj)  //{a: 2, b: 2, c: 2}复制代码
  • 扩展2
    现在找下字符串中出现次数最多的字符
    var str = 'adaddvadsfgtrsytreewythjnmnbv'
var str = 'adaddvadsfgtrsytreewythjnmnbv'
 var obj = {}
 for (var i= 0; i< str.length; i++) {
    obj[str[i]] = 1 || (obj[str[i]] + 1)  
 }
 console.log(obj)  //{a: 2, b: 2, c: 2}  这里找到 所有
 var temp_val = 1 //temp_val 标记一个初始数量
 var temp_key = str[0] //temp_key 标记初始一个字符
 for (var key in obj) {
     if (obj[key] > temp) {
        temp_key = key
        temp_val = obj[key]
     }
 }
 //这里 temp_key   temp_val  显示了 那个字符 最多复制代码

基础还有很多 希望继续努力

### 关于大数据相关的考研面试目 以下是针对大数据领域的一些常见考研面试及其解答思路: #### 1. **什么是大数据?其特是什么?** 大数据是指无法通过传统数据处理工具有效管理和分析的数据集合。它具有四个主要特征,即所谓的“4V”模型[^3]: - Volume(大量):指数据规模巨大。 - Velocity(高速):指数据生成和流动的速度非常快。 - Variety(多样):指数据类型的多样性,包括结构化、半结构化和非结构化数据。 - Veracity(真实性):指数据的质量和可信度。 #### 2. **常见的大数据处理框架有哪些?各自的适用场景是什么?** 目前主流的大数据处理框架包括 Hadoop 和 Spark 等[^2]: - **Hadoop** 是一种分布式计算框架,主要用于批处理任务。它的核心组件包括 HDFS(分布式文件系统)和 MapReduce(编程模型),适合大规模离线数据分析。 - **Spark** 则是一种内存级计算框架,支持流式处理、机器学习等多种应用场景。相比 Hadoop 的磁盘操作,Spark 更加高效,适用于需要快速响应的任务。 #### 3. **如何解决大数据中的隐私保护问?** 随着大数据的发展,隐私保护成为一个重要议。解决方案通常包括以下几个方面: - 数据脱敏:通过对敏感字段进行加密或替换来降低泄露风险。 - 差分隐私:在统计查询中引入噪声,从而隐藏个体的具体信息。 - 加密技术:利用同态加密等方式确保数据在传输和存储过程中的安全性。 #### 4. **谈谈你对 NoSQL 数据库的理解以及与关系型数据库的区别?** NoSQL 数据库是为了应对海量非结构化数据而设计的一种新型数据库体系: - 它们放弃了传统的 ACID 特性,转而采用 BASE 原则(基本可用、软状态、最终一致性)。 - 主要分为键值存储(如 Redis)、文档存储(如 MongoDB)、列族存储(如 Cassandra)和图数据库(如 Neo4j)四类。 对比关系型数据库,NoSQL 提供更高的扩展性和灵活性,但在务支持上相对较弱。 #### 5. **描述一下 MapReduce 的工作机制?** MapReduce 是 Google 提出的一种用于并行处理大规模数据集的编程模型: - **Map 阶段**:输入数据被分割成多个小块,每一块由一个 map 函数独立处理,输出一系列中间 key-value 对。 - **Shuffle & Sort 阶段**:将相同 keyvalue 收集在一起,并按需排序。 - **Reduce 阶段**:reduce 函数接收这些聚合后的 key-value 对作为输入,进一步加工得到最终结果。 ```python def mapper(record): # 将记录拆分成单词列表 words = record.split() for word in words: yield (word, 1) def reducer(key, values): # 计算某个单词出现次数总和 total = sum(values) yield (key, total) ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值