搜索引擎岗位应聘必备题

简介: 假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。

搜索引擎岗位应聘必备题


导读

在搜索引擎应聘面试过程中,围绕搜索引擎本身技术、应用特点,总结有以下几类问题:1 URL2分词,3排序,4存储和系统,5开源系统,6数据挖掘。从另外一个角度看就是围绕存储、计算、服务展开。主要考察被面试者的全面基础知识、索引系统理解程度、系统设计分析能力,以及项目经验和动手能力。

共两部分内容,第一部分围绕提出6类问题的一些代表题,第二部分单独从海量数据处理提出问题和解决策略。

第一部分6类问题

1  URL问题

1.1 去重

A,B两个文件,每个有50亿个URL,如何找出两个文件中重复的url,不能用分布式。

1.2 爬虫设计

如何实现一个可以抓取5亿视频数据,提供最短30分钟更新最新视频的分布式爬虫系统,并画出示意图。说明提高爬虫效率优化点,数据实时更新策略

1.3爬虫维护

    设计一个可以方便维护的网页提取的策略,以及后续维护策略方法。

1.4爬虫设计

设计一个在几十台机器爬虫部署,并不断升级维护的最小工作量的策略和方法。

2. 分词问题

2.1 词典设计

设计一个字典。以字符串为索引,存储用户定义的定长结构。要求有增、删、查、改的功能。已经给定一个函数,可以由字符串映射到一个签名,每个签名由两个unsigned   int类型组成。假设每一个字符串能够对应唯一的一个签名,完全没有重复(或者重复的概率可以忽略),并且签名分布足够均匀。

请描述你的数据结构?内存如何申请?增、删、查、改的功能如何实现?如果操作很频繁,该如何优化?

2.2. 分词策略

说明一个自己常用的分词策略和业界常用分词和特点。

3 排序问题

3.1 检索评价

说明一个检索系统的关键指标有哪些。

3.2 排序参数

说明影响一个查询返回内容排序的影响因素有哪些。如果需要提高准确度需要优化哪些模块或则参数。说明一个网页的哪些数据对检索排序影响较大。

3.3动态排序

  设计一个排序[ 准确度 ] 持续优化策略和方法,保证在仅可能少重建索引的前提下面,持续优化排序, 说明基本思路。

4存储和系统题

4.1 存储和访问

如何实现一个可以承载5亿视频数据 可以提供90%的请求在200ms 内返回,支持高峰1000q/s 的检索系统。说明基本结构和模块策略。

4.2 存储和访问

如何实现一个可以保存5亿条数据的存储系统。使用何种策略,在大量写入,大量读取的情况。

4.3. 系统维护

如何保证一个服务系统不间断运行情况下维护[当机维护]和升级,在升级,切换,索引重建等情况。

4.4. 自动化处理

举出一个可以自学习,自调整的软件系统的基本组成和相关实例

4.5 存储和访问

200亿条数据,每条数据的大小在1K~1M不等,每条数据有一个唯一的u_int64id

请设计一个读取数据系统,能根据id获取数据。要求:

A.        内存有限制,16G

B.        尽可能利用内存资源

C.        尽可能高效的获取数据

D.        可以利用磁盘,磁盘容量不受限制

 

 

5开源案例题

5.1说明基本搜索技术学习途径和方法。

5.2说明一种数据流式业务处理的相关方法和技术

5.3  lucene  solr 的基本模块和流程和优缺点

5.4  lucene  solr 有哪些可扩展可优化点

5.5  nuthc基本模块和优缺点

5.6  hadoop 基本模块和流程和优缺点

5.7  hbase 基本模块和流程和优缺点

5.8  zookeeper 基本模块和流程和优缺点

5.9  Mareduce基本原理和优缺点

5.10  Google三件宝分析

5.11上机题:

实现一个简单 lucene [也可以其他开源组件] 的检索和查询系统。文档支持 title content

5.12上机题:

实现一个简单爬虫 抓取一个规则URL 网页。保存成文件到一个文件夹。 http://www.youku.com/playlist_show/id_[1-10000].html

文件命名按照 title-id.html 方法。

6数据挖掘问题

6.1. 说明在搜索中常用的几种数据分析和挖掘的方法 以及应用场合。

第二部分 海量数据处理

在处理海量数据问题时,首先要仔细分析问题,明白问题需要解决那些关键问题,明白需要达到怎样的存储、性能要求,在这之前,应充分理解业务数据的分布、数据粒度、数据服务的质量要求、数据的动态性、数据的关联性等真实数据、业务熟悉。通常我认为,处理海量数据问题时,心中要有一些基本概念:

   1. 现有的开源的优秀工具那些是处理海量数据的;

   2. 海量数据就因为数据大吗,可以考虑对海量数据进行分区操作;

   3. 加快海量数据的访问,数据索引必不可是;

   4. 内存总是有限的,内存的速度是最好的,建立缓存机制是十分必要的;

   5. 海量数据来源多样,数据格式也不相同,最好是统一为字符串处理,逻辑处理交给上层应用;

   6. 海量数据离不开集群、分布式,分布式的出错处理、负载均衡就必然要有一套可行的机制;

   7. 所有底层的问题或者说存储的问题解决了,未来方便上层应用或者夸大底层支持的业务,对外应该有一个明朗的逻辑视图;

   8. 系统设计和结构,会因为不同的语言、操作性在实现难以上不同,这也需要考虑;

   9. 海量数据的一个应用就是数据挖掘服务,多域数据来源统一管理下,数据仓库和相关计算也应该了解一二;

   10. 尽管说存储不是问题,如果能对数据进行压缩处理,又可以接受的性能,这何乐而不为呢。

在参考前人博客、文摘加上个人一点理解,汇总以下一些基础概念已帮助和我一样面临就业的学生,应对未来公司的面试考核。当然,有实际工作经验的大牛门来说,下面的问题早已不是问题,他们都在某个问题上是专家了。欢迎大牛指导!

 

具有通用性的数据结构和算法思路汇总有:

1. Bloom filter

2. Hashing

3. bit-map

4.

5. 双层桶划分,可以理解为多级索引

6. 数据库索引

7. 倒排索引(Inverted index)

8. 外排序

9.trie

10.分布式处理

 

参考:

1大数据量,海量数据 处理方法总结()  http://g.51cto.com/880824/85208

2数据挖掘中分类算法小结 http://www.hadoopor.com/thread-270-1-1.html

3 http://database.ctocio.com.cn/tips/273/8248273.s

4 http://www.google.com.hk

目录
相关文章
|
算法 测试技术 数据处理
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
293 1
|
网络协议 网络安全 Linux
|
算法
OR-tools求解器使用介绍(二)
OR-tools求解器使用介绍(二)
1245 0
|
负载均衡 算法 应用服务中间件
nginx的负载均衡是干什么的?具体如何实现?底层原理是什么?
nginx的负载均衡是干什么的?具体如何实现?底层原理是什么?
542 0
|
6月前
|
数据可视化 测试技术 API
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
156 5
|
机器学习/深度学习 自然语言处理 算法
人类偏好对齐训练技术解析
大型语言模型(LLMs)通过在大量文本数据集上进行无监督预训练,获得丰富的语言模式和知识,这一阶段训练后的模型被称为base model。
|
算法 数据库
CAS核心思想、底层实现
CAS核心思想、底层实现
337 0
|
监控 数据库连接 PHP
利用Laravel-Admin从头撸一个CRM
本教程聚焦于使用Laravel 5.6+和Laravel-Admin构建CRM系统。你将学习CRM基础、模块及权限管理。核心模块包括联系人(潜在客户、机会、客户和关闭阶段)、任务、文档、邮件/消息、用户、角色&权限和日历。准备工作涉及创建新的Laravel项目,安装Laravel-Admin,配置数据库并运行安装命令。后续章节将介绍数据库设计和模型创建。
|
存储 消息中间件 缓存
flink面试问题总结(1)
flink面试问题总结(1)
|
Arthas 监控 数据可视化
Java线上问题排查神器Arthas实战分析
Java线上问题排查神器Arthas实战分析 是不是在实际开发工作当中经常碰到自己写的代码在开发、测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂;而且debug不一定是最高效的方法,遇到线上问题不能debug了怎么办。原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat、jmap、jstack、 jconsole、visualvm、Java Mission Control、MAT等。
890 0
Java线上问题排查神器Arthas实战分析