临近年关,不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么?

作为一个java后端老鸟,跌打滚爬多次被面试和面试别人,总结了一些经验,希望对大家有所帮助。

特别说明,仅仅针对工作两年以上的java后端开发。以开放性题目为主。

1.数据结构相关

假设1亿整数存放在一个txt文件中,如何去重和排序?

思路:

1.1.面试者要评估一下一亿整数的大小。一个int占4个字节,1亿呢?

1.2.去重的数据结构有哪些?HashSet--->引申到HashMap--->ConcurrentHashMap

1.3 数据量增大到十亿百亿怎么去重?

  布隆过滤器,优点,缺点

1.4.其他方式?

  数据库distinct order by,txt怎么导入到数据库?load

redis去重排序,redis的数据结构-->引申到其他数据结构 String,list,hash,set,sorted set,hyperloglog,geo

mongo去重排序,

....

2. 算法相关,主要考察代码能力

斐波那契数列(fabnacci)实现,首先介绍一下该算法的思想

  

2.1 第一级别实现: 两层递归

     public static long fibonacci(int n){if(n==0) return 0;else if(n==1) return 1;else return fibonacci(n-1)+fibonacci(n-2);} 

问算法复杂度及评估一下性能问题,提示可以优化。

2.2 第二级别:减少一层递归

    public static void main(String[] args) {long tmp=0;// TODO Auto-generated method stubint n=10;Long start=System.currentTimeMillis();for(int i=0;i<n;i++){System.out.print(fibonacci(i)+" ");}System.out.println("-------------------------");System.out.println("耗时:"+(System.currentTimeMillis()-start));}    public static long fibonacci(int n) {long result = 0;if (n == 0) {result = 0;} else if (n == 1) {result = 1;tmp=result;} else {result = tmp+fibonacci(n - 2);tmp=result;}return result;}

问题,算法复杂度,引导有没有不用递归的?

2.3 无递归

    public static long fibonacci(int n){long before=0,behind=0;long result=0;for(int i=0;i<n;i++){if(i==0){result=0;before=0;behind=0;}else if(i==1){result=1;before=0;behind=result;}else{result=before+behind;before=behind;behind=result;}}return result;}

3.并发问题

给出一个普通的spring mvc controller,如下:

@Controller
public class WelcomeController {private final Logger logger = LoggerFactory.getLogger(WelcomeController.class);
  @Autowired
  private final HelloWorldService helloWorldService;@RequestMapping(value = "/", method = RequestMethod.GET)public String index(Map<String, Object> model) {logger.debug("index() is executed!");model.put("title", helloWorldService.getTitle(""));model.put("msg", helloWorldService.getDesc());return "index";}}

问题:

3.1.线程模型是什么?单线程

3. 2.如何提升qps?线程池 executor

3.3.在线程池下如何控制并发?信号量Semaphore或者计数器CountDownLatch

引申到:Java中的可重入锁:synchronized 和 java.util.concurrent.locks.ReentrantLock

4.数据库相关

场景:一张表 test(a,b,c,e,f,g) 100w记录  常用查询条件 ab  abc  abe,如何提升查询效率?

4.1.索引,

4.2.复合索引的规则:最左原则。查询条件ae走不走索引?

4.3 1000w,1亿,十亿以上条记录查询是否会有什么不同?

4.4 多线程下如何保证数据一致性?乐观锁/悲观锁,应用场景不同点

5.设计模式相关

public class Test {  @Test  public void test() throws InterruptedException, ExecutionException {  AsyncTaskExecutor executor = new SimpleAsyncTaskExecutor("sys.out");  Future<String> future = executor.submit(new OutThread());  System.out.println(future.get());  System.out.println("Hello, World!");  Thread.sleep(10000 * 1000L);  }  static class OutThread implements Callable<String> {  public void run() {  }  @Override  public String call() throws Exception {  String ret = " i test callable";  for (int i = 0; i < 10; i++) {  try {  Thread.sleep(2 * 1000L);  System.out.println("i sleep 1s");  } catch (InterruptedException e) {  // TODO Auto-generated catch block
                         e.printStackTrace();  }  }  return ret;  }    }
}  

5.1 看程序说明

5.2 引申到reactor模型

spring reactor

vert.x

akka

5.3 servlet 3 响应式编程

太累,先写到这里吧。

转载于:https://www.cnblogs.com/davidwang456/p/10213337.html

java高级工程师开放面试题集一相关推荐

  1. java高级工程师开放面试题集二

    临近年关,不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么? 作为一个java后端老鸟,跌打滚爬多次被面试和面试别人,总结了一些经验,希望对大家有所帮助. 特别说明,仅仅针对工作两年以上的java ...

  2. java高级工程师认证考试_java高级工程师开放面试题集

    java高级工程师开放面试题集 发布时间:2019-01-03 11:38, 浏览次数:1108 , 标签: java 临近年关,不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么? 作为一个jav ...

  3. Java程序员面试题集(131-135)

    Java程序员面试题集(131-135) 摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里.查看新内容请点击Java程序员面试题集(151-180) 1 ...

  4. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  5. Java高级工程师常见面试题

    一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... ...

  6. Java高级工程师每日面试题精选,面试经历分享

    MySQL为何不选择平衡二叉树 既然平衡二叉树解决了普通二叉树的问题,那么mysql为何不选择平衡二叉树作为索引呢? 索引需要存储什么 让我们想一想,如果我们要把索引存起来,那么应该存哪些信息呢,它应 ...

  7. JAVA高级工程师笔试面试题

    前段时间应聘几家公司的JAVA高级软件工程师职位遇到的几个笔试面试题: 一.tomcat有哪些性能调优方法,请举例说明? 二.Spring中bean的作用域有哪些? 三.struts2和struts1 ...

  8. Java面试题集(116-135)

    Java程序员面试题集(116-135) 摘要:这一部分讲解基于Java的Web开发相关面试题,即便在Java走向没落的当下,基于Java的Web开发因为拥有非常成熟的解决方案,仍然被广泛应用.不管你 ...

  9. Java面试题集(131-135)

    Java程序员面试题集(131-135) 摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里.查看新内容请点击Java程序员面试题集(151-180) 1 ...

最新文章

  1. 作品[RFileRead/WriteStream 练习] for s60 fp2
  2. python chm制作_生成chm文档的方法
  3. boost::mcgregor_common_subgraphs用法的测试程序
  4. 压测中提高并发数后服务端处理时间增长的原因分析
  5. [Python]爬虫v0.1
  6. python语言案例教程 单元测试_python单元测试unittest实例详解
  7. 在Window上安装Mysql
  8. TensorFlow2.0项目实战:从模型搭建到工业化部署全链路!
  9. 受两大市场拖累 IC Insights下调物联网半导体增长预期
  10. 微信小程序源代码基本文件类型
  11. 更换卡巴斯基6授权许可文件的方法
  12. Visual Studio2012版安装教程--C++新手初学者
  13. 用python做透视表_使用python在Excel中创建透视表
  14. linux搭建软路由,用 Alpine Linux 搭建软路由
  15. 总结一下:运维工程师面试
  16. 运算放大器电路PCB的设计技巧
  17. python-介绍泊松分布(poisson分布)
  18. js调用android.webkit,h5调用原生App的方法合集 window.webkit.messageHandlers
  19. comsol with matlab完整案例 sina,[转载]Comsol with Matlab 应用实例(2)
  20. x64dbg调试程序遇到异常:406D1388,MS_VC_EXCEPTION. E06D7363, CPP_EH_EXCEPTION

热门文章

  1. 浅谈安卓线程池相关问题
  2. 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结
  3. android平板 2017,2017年后平板电脑市场将复苏
  4. carplay是否可以用安卓系统_是否可以仅用键盘来操作Windows 10系统和Windows 10应用?...
  5. git stash 个人理解
  6. Linux下CMake简明教程(二)同一目录下多个源文件
  7. 在 tensorflow 和numpy 中矩阵的加法
  8. Ubuntu install of ROS Melodic
  9. sql 查询嵌套数组
  10. sql 精读(三) 标准 SQL 中的编号函数示例