深圳中正信息科技有限公司社招Java工程师(面经)

技术栈要求:
  • 技术基础扎实,熟悉java语言特性,了解linux操作系统
  • 熟悉面向对象设计开发以及各种常用设计模式,拥有良好编程习惯
  • 对常用的Java开发框架如spring、zookeeper、dubbo等有较好的理解,掌握消息中间件、redis缓存等框架
  • 掌握基于MySQL数据库的设计和开发
  1. 关于linux的了解,以及一些常见的命令------熟能生巧,没什么技术问题。对文件的复制粘贴重命名,以及修改内容、保存内容(主要是配置文件的更改配置)……
  2. ArrayList与LinkeList的异同?-------异:ArrayList底层使用数组,LinkedList使用的书双向链表;同:线程不同步,所以不安全。所以在做插入删除链表有优势,做查询的时候数组有优势。
  3. HashMap的底层原理?---------结合了上面两种的优势,数据+链表的结合,HashMap通过key的hashcode经过hash方法得到hash值,然后集合元素的长度做运算判断出当前元素的存放位置,如果当前位置存在元素的话,就判断该元素与要存入的元素hash值以及key是否相同,如果相同的话直接覆盖,不相同的话通过拉链法解决冲突。
  4. HashMap和Hashtable的区别?--------线程安全:HashMap是非线程安全的,效率较高;Hashtable内部经过synchronized修饰是线程安全的,但效率较低。HashMap可以使用一个null作为key,可以使用多个null作为value;Hashtable会抛出空指针异常的。
  5. ConcurrentHashMap和Hashtable的区别?----------ConcurrentHashMap在JDK1.7底层采用的是分段数组+链表的实现,JDK1.8采用数组+链表/红黑二叉树。Hashtable在JDK1.8之前采用数组+链表,数组为主体,链表为解决冲突而存在的。线程安全方面,ConcurrentHashMap在JDK1.7采用的是分段锁,没把锁只锁容器的一部分数据,多线程访问容器里不同数据段不会有锁竞争,从而提高了效率,JDK1.8采用了Node数组+链表+红黑树来实现;Hashtable使用synchronized效率较低,当一个线程去添加元素到容器中,其他线程只能阻塞。
  6. synchronized和ReenTrantLock的区别?--------两者都是可重入锁,synchronized依赖于JVM而ReenTrantLock依赖于API,所以API对于锁的操作更有可控性。ReenTrantLock增加了一些其他功能,等待中断,可实现公平锁,可实现选择性通知;
  7. 说说MySQL常见的存储引擎?------------常见的MyISAM和InnoDB,对于COUNT(*)统计表的记录时,MyISAM效率更高,因为MyISAM有meta-data(行数),强调的是性能为主,不支持外键,不支持事务。而InnoDB提供事务,具有提交、回滚,崩溃修复能力和食物安全机制等。
  8. 对于数据量非常大的表,如何进行优化?---------客户端操作大表时尽量带上限定范围,避免全表查询。读写分裂,主库负责写,从库负责读。垂直分区,即对列的拆分,把列较多的大表拆分成列数较少的小表。水平拆分,对表行的拆分……
  9. 如何理解redis的高性能和高并发?----------高性能:就是读取数据的性能提升,第一次从硬盘上的数据库读取,并将数据缓存到内存数据库redis中,后续的读取直接从缓存数据库中,如果数据库中的数据改变后同步更新缓存中的数据即可。高并发:对于直接操作数据库而造成的压力转移到缓存中。
  10. 谈谈你对缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级的理解?-----------缓存雪崩,即缓存失效,本来请求缓存的大量流量都去请求数据库,造成了数据库的压力剧增,甚至导致数据库宕机而造成系统崩溃。缓存穿透,一些恶意请求去查询的数据在数据库中没有,也就在缓存中没有,但大量的无效请求不断地涌入数据库中做无用功。缓存预热,将相关的缓存数据直接加载到缓存系统,避免用户先查询数据库再缓存的问题。缓存更新,redis默认的缓存失效策略和自定义清理过期缓存。缓存降级,非热点数据进行腾退处理,给热点数据让位。
  11. 谈谈Zookeeper的理解?-------用于分布式协调服务的框架,Leader维护与各个Follower和Observer节点,所有写操作都要通过Leader再由Leader广播给其他服务器,只要超过半数节点写入成功就会提交写请求。 Follower可以接收并相应客户的读请求并作出响应,也可以将客户的写请求接收并转发给leader,维持与leader的心跳响应,并具有投票权。  Observer无投票权,对于server的增多具有维护一致性,接收客户端的写请求并转发给leader节点……
  12. 谈做过的项目,微服务等-------------------略。
  13. 秒杀系统设计思路?------高并发、高可用的实际应用考量,具体思路略……
  14. SSO单点登录方案?------------------略
  15. 非技术的一些寒暄----------略

总结:多线程、多线程底层、数据库(包括内存数据库)的相关问题,项目的经验,项目的设计……

#社招##Java工程师##面经#
全部评论
感谢分享面经!欢迎参加过社招的牛友发社招面经拿京东卡!~ -------------------- 活动:社招面经征集|参加过社招的牛友,来发面经吧,拿京东卡
1 回复
分享
发布于 2019-12-10 11:06
大哥这是持久战面试玩嘛,哈哈
点赞 回复
分享
发布于 2019-12-10 12:41
小红书
校招火热招聘中
官网直投

相关推荐

7 30 评论
分享
牛客网
牛客企业服务