github后端开发面试题大集合(三)
作者:小海胆
链接:https://www.nowcoder.com/discuss/3616
来源:牛客网
13.软件架构相关问题:
- 什么情况下缓存是没用的,甚至是危险的?
- 为什么事件驱动的架构能提高可扩展性(scalability)?
- 什么样的代码是可读性强的代码?
- 紧急设计(Emergent Design)和演化架构(Evolutionary
Architecture)之间的区别是什么? - 横向扩展(scale out) vs 纵向扩展(scale up): 有什么区别?分别在什么场景下使用?
- 分布式系统中如何处理"故障切换(failover)"和"用户会话(user
session)"? - 什么是CQRS(Command Query Responsibility
Segregation)?他和最早的Command-Query Separation原则有什么区别? - 什么是三层架构?
- 如何设计一个可扩展性高的系统?
- 处理C10k问题的策略有哪些?
- 如果让你来设计一个去中心化的P2P系统,你会如何设计?
- 为什么CGI的扩展性不好?
- 在设计系统时,你如何防止供应商依赖(Vendor
Lock-in)? - 在可扩展性上,发布/订阅(Publish-Subscribe)模式有什么缺点?
- 80年代以后,CPU有哪些变化?这些变化,对编程产生了什么影响?
- 性能生命周期(performace lifecycle)中,你认为哪个部分是需要考虑进去的? 如何管理?
- 除了恶意攻击造成的拒绝服务现象以外,哪些设计或者架构上的问题会导致拒绝服务?
- 性能和可扩展性之间有什么关系?
- 什么时候紧耦合是OK的?
- 一个系统要有什么特征才能适配云计算环境(Cloud Ready)?
- Does unity of design imply an aristocracy of architects?
14.面向服务架构相关问题:
- 在SOA中,为什么长期存活的事务(Long-lived transation)不被看好,而Saga却被看好?
- SOA和MicroService之间有什么区别?
- 我们来谈谈Web服务的版本管理、版本兼容性、重大变更管理这些事情吧.
- 在saga中事务和补偿操作(compensation operation)之间的区别是什么?在SOA中呢?
- 微服务不能做得太"微",你认为什么时候微服务太"微"了?
- MicroService架构的优劣是什么?
15.安全相关问题:
- 什么是双因素认证(Two Factor Authentication)?在一个已有的Web应用中,你如何实现这种机制?
16.比尔盖茨式问题:
- 如果你把一面镜子放在扫描仪上,会发生什么?
- 假设有一个和你完全一样的克隆人,而他是你的上司,你愿意和他工作吗?
- 现在请你面试一下我。
- 为什么Quora上的回答会比Yahoo Answer上的回答好?
- 对手是现代语言,你的任务是要为Cobol辩护,你会如何进行?
- 10年后的你是什么样子?
- 假设你是我老板,我被解雇了。你会如何通知我?
- 我想要重构一个系统,而你想要从头重写。我们来争论一下该怎么弄吧。然后我们反转角色,再争论一下。
- 老板要你对公司撒谎,你的反应是什么?
- 如果你可以穿越到以前,你会给年轻时候的你什么建议?
17.代码示例问题:
- 这段Javascript函数的输出是什么?
1
2
3
4
5
6
7
8
|
function hookupevents() { for ( var i = 0; i < 3; i++) { document.getElementById( "button" + i) .addEventListener( "click" , function () { alert(i); }); } } |
- 关于类型擦除(Type Erasure),这段Java代码的输出是什么?为什么?
1
2
3
4
|
ArrayList<Integer> li = new ArrayList<Integer>(); ArrayList<Float> lf = new ArrayList<Float>(); if (li.getClass() == lf.getClass()) // evaluates to true System.out.println( "Equal" ); |
- 你能指出哪儿有内存泄漏吗?
public class Stack {
private Object[] elements;
private int size = 0;
private static final int DEFAULT_INITIAL_CAPACITY = 16;
public Stack() {
elements = new Object[DEFAULT_INITIAL_CAPACITY];
}
public void push(Object e) {
ensureCapacity();
elements[size++] = e;
}
public Object pop() {
if (size == 0)
throw new EmptyStackException();
return elements[--size];
}
/**
* Ensure space for at least one more element, roughly
* doubling the capacity each time the array needs to grow.
*/
private void ensureCapacity() {
if (elements.length == size)
elements = Arrays.copyOf(elements, 2 * size + 1);
}
}
- if语句,或者更加通用点,条件表达式通常是过程式编程/命令式编程的形式。你能去掉这段代码中的switch语句,用面向对象的方式来修改这段代码吗?
public class Formatter {
private Service service;
public Formatter(Service service) {
this.service = service;
}
public String doTheJob(String theInput) {
String response = service.askForPermission();
switch (response) {
case "FAIL":
return "error";
case "OK":
return String.format("%s%s", theInput, theInput);
default:
return null;
}
}
}
- 你能去掉这里的if语句,将它改成更加面向对象吗?
public class TheService {
private final FileHandler fileHandler;
private final FooRepository fooRepository;
public TheService(FileHandler fileHandler, FooRepository fooRepository) {
this.fileHandler = fileHandler;
this.fooRepository = fooRepository;
}
public String Execute(final String file) {
final String rewrittenUrl = fileHandler.getXmlFileFromFileName(file);
final String executionId = fileHandler.getExecutionIdFromFileName(file);
if ((executionId == "") || (rewrittenUrl == "")) {
return "";
}
Foo knownFoo = fooRepository.getFooByXmlFileName(rewrittenUrl);
if (knownFoo == null) {
return "";
}
return knownFoo.DoThat(file);
}
}
- 如何重构这段代码?
function()
{ HRESULT error = S_OK; if(SUCCEEDED(Operation1()))
{ if(SUCCEEDED(Operation2()))
{ if(SUCCEEDED(Operation3()))
{ if(SUCCEEDED(Operation4()))
{
} else {
error = OPERATION4FAILED;
}
} else {
error = OPERATION3FAILED;
}
} else {
error = OPERATION2FAILED;
}
} else {
error = OPERATION1FAILED;
} return error;
}
github后端开发面试题大集合(三)的更多相关文章
- github后端开发面试题大集合(一)
作者:小海胆链接:https://www.nowcoder.com/discuss/3614?type=0&order=0&pos=5&page=0?from=wb来源:牛客网 ...
- github后端开发面试题大集合(二)
作者:小海胆链接:https://www.nowcoder.com/discuss/3615?type=0&order=0&pos=8&page=0来源:牛客网 7.非关系型数 ...
- 各大公司java后端开发面试题
各大公司Java后端开发面试题总结 ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离 ...
- 面试题:各大公司Java后端开发面试题总结 已看1 背1 有用 链接有必要看看
ThreadLocal(线程变量副本) --整理 Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个 ...
- 各大公司Java后端开发面试题总结
ThreadLocal(线程变量副本)Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量.采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一个副 ...
- (最新)各大公司Java后端开发面试题总结
ThreadLocal(线程变量副本) Synchronized实现内存共享,ThreadLocal为每个线程维护一个本地变量. 采用空间换时间,它用于线程间的数据隔离,为每一个使用该变量的线程提供一 ...
- iOS开发面试题整理 (三)
1. 风格纠错题 修改完的代码: typedef NS_ENUM(NSInteger, CYLSex) { CYLSexMan, CYLSexWoman }; @interface CYLUser : ...
- 最新阿里Java后端开发面试题100道(P6-P7)
面试题 1.什么是字节码?采用字节码的好处是什么?2. Oracle JDK 和 OpenJDK 的对比?3.Arrays.sort 和 Collections.sort 实现原理和区别4.wait ...
- php开发面试题---php面向对象详解(对象的主要三个特性)
php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...
随机推荐
- C++11新特性——大括号初始化
C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello" ...
- 解题:POI 2013 Triumphal arch
题面 二分答案,问题就转化为了一个可行性问题,因为我们不知道国王会往哪里走,所以我们要在所有他可能走到的点建造,考虑用树形DP解决(这个DP还是比较好写的,你看我这个不会DP的人都能写出来=.=) 定 ...
- MVC 中@Html.DropDownListFor() 设置选中项 这么不好使 ? [问题点数:40分,结帖人lkf181]
http://bbs.csdn.net/topics/390867060 由于不知道错误原因在哪 我尽量把代码都贴出来吧:重点是:在 Controller 类里 我给 SelectListItem集合 ...
- Wannafly挑战赛21 C 大水题
https://www.nowcoder.com/acm/contest/159/C dp #include <cstdio> #include <cstdlib> #incl ...
- poi导出word表格详解 超详细了
转:非常感谢原作者 poi导出word表格详解 2018年07月20日 10:41:33 Z丶royAl 阅读数:36138 一.效果如下 二.js代码 function export_word( ...
- C++实现两个大整数的相加(考虑到负数异常情况)
实现两个大整数的相加,首先应该排除直接使用int和long long的方法,这些方法很容易溢出,这里为了方便(是否可以使用更精简的结构存储?)采用char来存储整数,整体思路如下: 1. 对于整数n和 ...
- 【题解】打地鼠 SDOI2011 模拟 行列无关
Prelude 为什么洛谷上的题解都是剪枝做的啊!就没有人写复杂度靠谱的算法吗! 传送到洛谷:( ̄. ̄) 传送到BZOJ:( ´・・)ノ(._.`) 本篇博客地址:o(><:)oo Sol ...
- C#实现执行数据库事务案例
我是实际项目来拆出来做的案例,场景是比如我们在做电商网站时,在创建订单时的一系列操作,通常在创建订单时我们需要数据表的操作有:订单的表头(主表).订单的详细.清空购物车.甚至是修改优惠劵的状态(在使用 ...
- Autolayout下使用代码改变frame无效
在使用自动布局的情况下,子视图的边框无法改变.就算调用setFrame方法也不会有效果.自动布局引擎对于子视图的大小和位置有最终的决定权.如果你需要在运行时改变边框,那就得用NSLayoutConst ...
- 内核:为了fan的健康,我的重新编译记录
email: jiqingwu@gmail.com date: 2008-02-13 关键词:ubuntu cpu cpufreqd cpufrequtils 编译 内核 装上ubuntu7.10后, ...