【成神之路】开放设计编程相关面试题

性能指标有哪些

PV,UV,QPS;响应200,500指数

如何发现性能瓶颈

Kibana,Cat等跟踪,健康检查工具

性能调优的常见手段

架构上:微服务话,水平拆分,垂直产分

数据库上优化查询,代码优化

说说你在项目中如何进行性能调优

慢请求;慢查询

说说你在项目中使用过的UML图

你如何考虑组件化、服务化、系统拆分

秒杀场景如何设计

 

说说你的开发流程、如何进行自动化部署的

你和团队是如何沟通的

你如何进行代码评审

说说你对技术与业务的理解

说说你在项目中遇到感觉最难Bug,是如何解决的

介绍一下工作中的一个你认为最有价值的项目,以及在这个过程中的角色、解决的问题、你觉得你们项目还有哪些不足的地方

 

 

说说你的优缺点、亮点

说说你最近在看什么书、什么博客、在研究什么新技术、再看那些开源项目的源代码

说说你觉得最有意义的技术书籍

工作之余做什么事情、平时是如何学习的,怎样提升自己的能力

说说个人发展方向方面的思考

说说你认为的服务端开发工程师应该具备哪些能力

说说你认为的架构师是什么样的,架构师主要做什么

如何看待加班的问题

 

 

如何防止表单重复提交(Token令牌环等方式);

有一个url白名单,需要使用正则表达式进行过滤,但是url量级很大,大概亿级,那么如何优化正则表达式?如何优化亿级的url匹配呢?

常见的Nginx负载均衡策略;已有两台Nginx服务器了,倘若这时候再增加一台服务器,采用什么负载均衡算法比较好?

扫描二维码登录的过程解析;

如何设计一个生成唯一UUID的算法?

实现一个负载均衡的算法,服务器资源分配为70%、20%、10%;

有三个线程T1 T2 T3,如何保证他们按顺序执行;

三个线程循环输出ABCABCABC....

 

 

秒杀系统设计,超卖怎么搞;

你们的图片时怎么存储的,对应在数据库中时如何保存图片的信息的?

假如成都没有一座消防站,现在问你要建立几座消防站,每个消防站要配多少名消防官兵,多少辆消防车,请你拿出一个方案;

基于数组实现一个循环阻塞队列;

常见的ipv4地址的展现形式如“168.0.0.1”,请实现ip地址和int类型的相互转换。(使用位移的方式)

现网某个服务部署在多台Liunx服务器上,其中一台突然出现CPU 100%的情况,而其他服务器正常,请列举可能导致这种情况发生的原因?如果您遇到这样的情况,应如何定位?内存?CPU?发布?debug?请求量?

 

给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?

海量日志数据,提取出某日访问百度次数最多的那个IP;

一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。

此话题后边会有专门的文章探讨,如果有等不及的小伙伴,可以移步参考:

1、https://blog.csdn.net/v_july_v/article/details/6279498

2、https://blog.csdn.net/v_july_v/article/details/7382693

 

 

有两根粗细均匀的香(烧香拜佛的香),每一根烧完都花一个小时,怎么样能够得到15min?

假定你有8个撞球,其中有1个球比其他的球稍重,如果只能利用天平来断定哪一个球重,要找到较重的球,要称几次?(2次);

实验室里有1000个一模一样的瓶子,但是其中的一瓶有毒。可以用实验室的小白鼠来测试哪一瓶是毒药。如果小白鼠喝掉毒药的话,会在一个星期的时候死去,其他瓶子里的药水没有任何副作用。请问最少用多少只小白鼠可以在一个星期以内查出哪瓶是毒药;(答案是10只)

假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水;

 

 

什么是敏捷开发,防御性编程,并行编程。Team Leader的思考;

我看你做过性能优化,比如你怎么分析项目里面的OOM的,内存泄露呢?详细说思路;

说下多线程,我们什么时候需要分析线程数,怎么分析,分析什么因素;

CPU高?什么情况CPU高?解决什么问题?

你有遇到过临界区问题吗?有遇到过吗?你在项目遇到这个问题是怎样解决的?

 

 

有几台机器存储着几亿淘宝搜索日志,你只有一台2g的电脑,怎么选出搜索热度最高的十个搜索关键词;

如何设计算法压缩一段URL;

有一个页面能同时展示两个广告,现在有五个广告,设计算法使五个广告展示概率为1:2:3:4:5;

有25匹马,五个赛道,用最少比赛次数将25匹马排序;

 

 

Tomcat缓存,聊下缓存的整体理解,知道多少种缓存;

解释下Mucene原理,倒排索引,怎样进行中文分词,基于什么进行分词;

TopN的大数据量题;

你对接入层要思考什么东西?遇到过哪些问题?搭建系统要考量哪些因素?

然后项目问题,优化问题;

熟悉maven是吧?我们来聊下Maven的源码原理,Maven冲突的时候,怎么选择依赖包,我们怎么查,我们遇到两个不一样的版本,我们应该如何去选择,为什么?

项目如何分组,性能优化小组应该做哪些;

我们来说下接入层的搭建,认知分析;

问下项目的系统构建,思考,为什么这样构建?

如何判断一段代码的好坏;

比如我有个电商平台,做每日订单的异常检测,服务端代码应该写;

 

 

重点原则:积极的心态、乐观的态度

不要不懂装懂,被指出错误要勇于承认,不要逃避自己的问题;

不会的题,至少尽可能给出解题思路;一定不要随口“这个我没遇到过,不太清楚解决方案”之类的回答。

强调总结、反思、分享,注重团队合作;

 

部分可以考虑作准备的题目(示例)

1)重点:Java语言基础

2)重点:排序(尤其快排和堆排序)、数据结构

3)重点:目前在做的业务,整体框架(现场面可能会在白板上画)、技术难点、成就点、解决方案及过程

4)JVM相关,GC、ClassLoader等

5)缓存穿透、缓存雪崩、缓存热点

6)设计一个新浪 短链接服务,考虑高并发 和 链接的随机性

7)无序数组计算中位数,不能用经典排序方法

8)一个一天100亿次的PV网站,如果一个新的IP来了,快速判断是否访问过

 

代码题:

  1. 最长不下降子序列

 

2)最长回文子串

 

3)前K个最大数(TopK)的计算(网上可搜)

 

4)实现生产者、消费者场景。假设现在有一个任务调度系统负责处理数据,A线程负责从DB里拉待处理的任务放到队列,B线程组负责从队列中处理任务;由于任务处理量较大,B线程组会将任务进行并行处理。当所有子线程处理完成后,由B线程汇总结果并统一入库

要求:

A线程组负责生产数据data,B线程组负责消费data数据,A、B线程组要实现阻塞;尽量考虑异常场景的处理;

B线程组的一个处理线程在获取到一个数后,需要再拆分5个子线程并行处理是数据,当5个子线程全部处理完成,B的处理线程将结果合并;请尽量考虑异常场景的处理;

 

5)设计一个简单的文本自动回答系统

系统接收到用户问题后,由两个应答节点负责应答,节点A从内部知识库获取答案,节点B从外部搜索答案,节点A、B的顺序可变,当A和B均为获取到正确答案时,返回兜底答案;

除给出文本答案外,应答节点还需支持一些额外操作,例如当用户问“账户被冻结了怎么办”时需验证用户账户是否处于冻结状态;

用户问题来自Web页、H5页、Android、iOS、API五个不同终端,不同终端显示效果不同。应答节点获取到答案后,需要把答案解析为各终端的特定格式;

应答节点给出的答案不能直接返回,需要在答案最后加上“如果xxxxxxxxxx”。

要求:

设计、编码实现类及类之间的关联,若有必要可实现数据存取逻辑或基本方法

系统需尽可能支持可扩展,用到模板方法等设计模式

无需实现应答节点A、B具体应答逻辑

 

6)实现一个IP地址黑白名单过滤功能

 

7)求最大不相交覆盖区间

题干:有很多时间片段,如起始时刻a到结束时刻b,表示为(a, b),求所有时间片段的覆盖时间区间,如(1, 4), (2, 5), (8,9)的覆盖时间区间为(1,5)(8,9)

要求:满足题干要求的情况下尽可能优化

 

8)打印文件夹下全部子目录中含有特定字符串的文件

题干:已知一个文件夹,编写一个程序快速找到该文件夹下的所有名称中带“abc”字符的文件或文件夹。

要求:

    如果文件夹很大很深,堆栈上需要考虑

    程序具备可扩展性,可插件化地实现模糊匹配,例如匹配名称、匹配文件内容、匹配作者、匹配专辑(Mp3、Mp4)等等,支持快速开发自定义插件满足需求。

    插件之间的逻辑关系可配置化,例如 “匹配名称&匹配文件内容 || 匹配作者”

考虑英文匹配的大小写问题。

 

9)题干:假设有一个银行网关系统,它负责连接每个银行渠道,一般而言,它的职责包含两部分:先调用银行的提供的API生成一个可信的交易请求,再调用每个银行渠道的API接口向银行发送该交易请求。由于业务的通用性,每个银行渠道会提供自己独立的Java开发包,用于组装生成交易请求的组装生成和签名验签等功能。请编写一个交易生成模块,可灵活生成各个银行的交易请求,并且保证不出现 classnotfound、NoSuchMethod、ClassCast等常见类加载异常。

要求:

类独立加载器,不能漏掉、串掉class,线程安全

注意某些内部通过反射加载的类,比如MessageDigest.getInstance("SHA")

注意不同银行开发包依赖某个共同类的不同version,比如A 银行依赖log4j-1.0,B银行依赖log4j-2.0,两者API不兼容。

 

 

3个天气预报网站,设计一个client API根据city最快地取回天气预报?

 Netty实现同时访问3个域名,先返回的直接返回给client端,同步异步转换

 

harding-jdbc, mycat比较,各自优缺点

怎么识别爬虫

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值