java高级工程师开放面试题集一
临近年关,不少人蠢蠢欲动,有童鞋问我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高级工程师开放面试题集一相关推荐
- java高级工程师开放面试题集二
临近年关,不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么? 作为一个java后端老鸟,跌打滚爬多次被面试和面试别人,总结了一些经验,希望对大家有所帮助. 特别说明,仅仅针对工作两年以上的java ...
- java高级工程师认证考试_java高级工程师开放面试题集
java高级工程师开放面试题集 发布时间:2019-01-03 11:38, 浏览次数:1108 , 标签: java 临近年关,不少人蠢蠢欲动,有童鞋问我java后端面试会面试什么? 作为一个jav ...
- Java程序员面试题集(131-135)
Java程序员面试题集(131-135) 摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里.查看新内容请点击Java程序员面试题集(151-180) 1 ...
- Java程序猿面试题集(181- 199)
Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181. 182. 183. 184. 185. 186. 1 ...
- Java高级工程师常见面试题
一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... ...
- Java高级工程师每日面试题精选,面试经历分享
MySQL为何不选择平衡二叉树 既然平衡二叉树解决了普通二叉树的问题,那么mysql为何不选择平衡二叉树作为索引呢? 索引需要存储什么 让我们想一想,如果我们要把索引存起来,那么应该存哪些信息呢,它应 ...
- JAVA高级工程师笔试面试题
前段时间应聘几家公司的JAVA高级软件工程师职位遇到的几个笔试面试题: 一.tomcat有哪些性能调优方法,请举例说明? 二.Spring中bean的作用域有哪些? 三.struts2和struts1 ...
- Java面试题集(116-135)
Java程序员面试题集(116-135) 摘要:这一部分讲解基于Java的Web开发相关面试题,即便在Java走向没落的当下,基于Java的Web开发因为拥有非常成熟的解决方案,仍然被广泛应用.不管你 ...
- Java面试题集(131-135)
Java程序员面试题集(131-135) 摘要:这部分内容准备重新发布为Java程序员面试题集(151-180),但这篇帖子仍然保留在这里.查看新内容请点击Java程序员面试题集(151-180) 1 ...
最新文章
- 作品[RFileRead/WriteStream 练习] for s60 fp2
- python chm制作_生成chm文档的方法
- boost::mcgregor_common_subgraphs用法的测试程序
- 压测中提高并发数后服务端处理时间增长的原因分析
- [Python]爬虫v0.1
- python语言案例教程 单元测试_python单元测试unittest实例详解
- 在Window上安装Mysql
- TensorFlow2.0项目实战:从模型搭建到工业化部署全链路!
- 受两大市场拖累 IC Insights下调物联网半导体增长预期
- 微信小程序源代码基本文件类型
- 更换卡巴斯基6授权许可文件的方法
- Visual Studio2012版安装教程--C++新手初学者
- 用python做透视表_使用python在Excel中创建透视表
- linux搭建软路由,用 Alpine Linux 搭建软路由
- 总结一下:运维工程师面试
- 运算放大器电路PCB的设计技巧
- python-介绍泊松分布(poisson分布)
- js调用android.webkit,h5调用原生App的方法合集 window.webkit.messageHandlers
- comsol with matlab完整案例 sina,[转载]Comsol with Matlab 应用实例(2)
- x64dbg调试程序遇到异常:406D1388,MS_VC_EXCEPTION. E06D7363, CPP_EH_EXCEPTION
热门文章
- 浅谈安卓线程池相关问题
- 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结
- android平板 2017,2017年后平板电脑市场将复苏
- carplay是否可以用安卓系统_是否可以仅用键盘来操作Windows 10系统和Windows 10应用?...
- git stash 个人理解
- Linux下CMake简明教程(二)同一目录下多个源文件
- 在 tensorflow 和numpy 中矩阵的加法
- Ubuntu install of ROS Melodic
- sql 查询嵌套数组
- sql 精读(三) 标准 SQL 中的编号函数示例