做开发5年,这8个高效开发好习惯我悟了🔥

Posted 迈阿蜜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了做开发5年,这8个高效开发好习惯我悟了🔥相关的知识,希望对你有一定的参考价值。

优秀的Web开发人员工作效率更高,因为他们拥有丰富的经验和良好的习惯。工作多年,我有一些自己了解的习惯分享给大家,都曾让我受益,做开发5年了,今天来跟大家分享一下我的感想。✍

VIVO一面竟然翻车,含泪整理了这些Java面经,看完我悟了

前言

这篇记录一下今年在vivo面试的准备所有面经,我给大家简单的做了一个分类汇总,本来是用来为vivo二面提前做准备的,谁知道一面都没过,现在人还在人才库里。 我还是很想去vivo的,希望下次能有机会吧。

作为阅读福利,我把这些Java面试题整理成了PDF,现在分享给阅读到本篇文章的Java程序员朋友们,需要的可【点击此处】获取!

vivo 面经汇总

Java基础

1.JDK JRE

2. Java异常了解吗?说说平时遇到的异常?说出6种常见的java异常。写程序遇到过哪些异常 运行时异常有哪些

3. 面向对象 面对对象的几大特性 多态怎么

4. 修饰符:public;protect;default;private优先级

5. 对string类的理解。stringbuffer 和 stringbuilder

6. 反射机制介绍一下

7. bio,nio,aio分别介绍一下,nio的实现方式

8. 问了public等变量定义修饰词的时间域

9. 问了反射机制,还有问了动态代理的好处和坏处,好处答不上来

10. 接口和抽象类的区别。

11. 有一个public static final的HashMap,里边对象的属性能不能修改?

12. 为什么java 平台无关性 机器码和字节码区别 JVM加载代码的一个流程

13. java数据类型以及自己的应用 自动拆箱和自动装箱以及自己的应用即什么时候用到的,列举几种情况

14. 什么是值传递和引用传递,区别及应用

15. 重载和重写

16. static方法是否能重写,接口和抽象类的区别

17. 你觉得java是一种什么样的语言以及java特性

18. lamda表达式了解吗?1.8新特性有什么?(面试宝典对接口抽象这个问题是错的,过时了)

19. 内存泄露怎么造成的,怎么排查

20. 讲讲final修饰符。

21.一个对象占多少内存。

22. 最短路径问题

23. java浅拷贝和深拷贝

24. 内存泄露的原因和处理

25. java反射机制,优点缺点

26. 说说静态变量和非静态变量的区别,用类名调用静态变量和用实例对象调用静态变量有区别吗?非静态方法里可以有静态变量吗?

27. static能不能被重写?

  • 重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。
    语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。即:语法上static支持重写,但是运行效果上达不到多态目的

28.序列化,反序列化,什么时候用? 如何对一个对象序列化

Java集合类

1. Hashmap底层(数组+链表+红黑树)hashmap为什么线程不安全,如何保证线程安全,就扯到concurrenthashmap hashmap底层实现 多线程会出现什么情况 扩容机制是什么为什么会死锁 如何解决碰撞 Jdk 1.8的优化。为什么使用红黑树,它是如何做到效率优化的? hashmap了解不,原理是什么,位图了解不,跳跃表了解不,红黑树了解不,红黑树插入过程,B+树了解不,B+树特点和插入过程,邻接表和邻接矩阵区别,分别在什么地方用到,插入和查询的流程。

2. concurrenthashmap1.7和1.8的区别;concurrenthashmap说说,它是如何保证线程安全的?jdk1.7的hashentry和segment锁。具体说说segment锁?能讲下ConcurrentHashMap的实现原理么 JDK7或者8都行

3. 常用集合类 实现类

4. list和set区别(重复/不重复)

5. set,list,map(线程安全的map,map怎么实现之类的)

6. 红黑树介绍一下,跟平衡二叉树比较一下,红黑树有哪些应用场景

7. 你常用的数据结构有哪些?

8. 红黑树的特点,AVL树

9. 一致性哈希函数以及hashmap的put方法

10. 数组、二叉搜索树、B树、B+树

11. 堆和栈。堆、栈

12. 二叉树的最大节点个数;2^n-1;

Java并发

1. java创建线程的方式,runnable和callable区别(参数不同)1. java线程的状态有哪些;线程的几种状态

2. wait和sleep的区别;wait和notify的使用场景;

3. 介绍一下volatile以及原理;volatile介绍一下Volatile底层是如何实现的? 说了内存可见性和内存屏障,Volatile是绝对线2程安全的吗?不是,没有保证原子性。volatile关键字在线程通信的问题

4. 介绍一下synchornized以及原理; lock和synchornized的区别;synchronized锁的升级过程?Synchronized,底层是如何实现的?说了monitor对象头,以及两个monitorenter和monitorexit运用于代码块。对象头是存储了哪些信息?说说synchronized的锁优化过程?说了偏向,自旋,轻量和重量。

5. 介绍一下AQS;

6. 说一下公平锁和非公平锁的原理;

7. cas操作是什么,以及可能出现的问题;

8. 线程池,然后你再平时怎么用的,工作原理,有哪些重要参数,饱和策略有哪些;线程池了解吧,说说如何实现线程池?核心参数哪些?有哪些阻塞队列呢?如何优雅的关闭线程池 线程池(线程大小,阻塞队列)线程创建,线程池参数,说说你常用的线程池?说了new ***d 和newFixed。以及介绍各个参数

9. 说说你理解的悲观锁和乐观锁?乐观锁有哪些?乐观锁有什么缺点?

10. 阻塞队列 线程间通信方式 创建线程方式 创建线程池方式 线程池常用参数

11. 锁有哪些

12. 说说你常用的并发包JUI?

13. 问了如何保证多线程通信

14. 你用过Java的J.U.C并发包吧,给我讲一下AQS的原理

15. CAS的原理给我讲一下,他是怎么保证内存的可见性的。CAS会产生什么问题

16. 知道Java中的内存模型吧,它有8个指令你给我说一下

17. 多线程如何保持同步?

18. java可见性的关键字及其原理。

19. cpu密集型多线程和io密集型多线程的比较。cpu密集型里如何管理多线程? 用什么样的线程池和阻塞队列?

20. cpu线程特别多会产生什么问题?io密集型里怎么减少需要的线程数?

21. io多路复用的原理和实现。怎么减少处理io(和磁盘io交互)所需要的线程?

22. 线程实现方式。有什么区别。线程之间的通讯,进程之间的通讯。

JVM

1. JVM运行时内存区域划分?哪些线程私有?运行时数据区,私有共享都是哪些?堆区内存如何分配?

2. 对象的生命周期?

3. JVM垃圾回收器,cms和g1的特点,两者的区别是什么,比g1更加先进的垃圾回收器有了解么,ZGC原理,能够管理多大的内存,CMS能管理多大的内存,G1呢

4. JVM内存模型 类的生命周期 类加载过程 双亲委派机制了解吗 进入老年代过程 什么情况下直接进入老年代

5. JVM内存分布(堆栈等,程序计数器+jvm栈+本地方法栈线程不共享,堆和方法区线程共享)

6. 类加载机制,过程,类加载机制?如何自定义实现类加载器?双亲委派模型、类加载器类别,双亲委派模型本质是解决了什么问题?安全性,有哪几种类加载器?类加载的流程。知道哪些类加载器。类加载器之间的关系?双亲委派模型。为什么使用双亲委派模型?

7. 垃圾回收算法,常见的垃圾回收器及他们之间区别,垃圾回收发生在哪里,怎么判断对象存活、GC Roots具体有哪些、讲讲对象分配与回收,什么可以作为垃圾回收的对象,垃圾回收算法和流程。

8. 栈什么情况下会溢出?

9. 静态变量存放在内存哪个区域?

10. 怎么查看java虚拟机内存占用?

11. 如何减少full gc的次数?方法区是否需要gc

12. 4个引用类型

计算机网络

1. 输入一个url后的过程;浏览器从发送请求的全部过程

2. OSI七层和TCP四层协议,OSI七层模型/五层模型,每一层有哪些协议,http,tcp,ip位于哪一层

3. TCP三次握手四次分手,tcp四次挥手为什么要四次,为什么TCP是安全的,TCP,UDP的区别

4. TCP报文结构,HTTP结构, TCP,UDP,HTTP的报文格式(我懵了)

5. 设计一个应用层协议(没有答出来

6. HTTP协议连接过程,HTTPS连接过程,HTTP的长连接是怎么做的HTTP2和HTTP1区别,HTTP请求过程http的几种方法,HTTP跟HTTPS的区别,https加密过程

操作系统

1. 程序,进程和线程的区别

2. 什么时候情况下要用多线程?

3. 进程之间怎么通信的?

4. 一个手机应用程序里面的进程和线程分别是怎么进行的?

5. 死锁,怎么解死锁,死锁条件,怎么预防

6. 进程的状态:阻塞+就绪+执行

7. 手机内存8g,是32位的,一个进程能申请多少内存?

8. 线程的应用,举例,线程的阻塞

9. 主线程和子线程的区别

Linux :

1. linux中如何查看CPU负载 top

2. linux用过嘛(扯到了我训练过深度模型,小哥哥直接来了个场景题)场景题:推荐算法中如何控制广告推送频率(结合强化学习说了一些

3. Linux了解不,df dh区别,如何格式化磁盘,磁盘挂载过程,tcp丢包如何排查,docker是用什么实现的

4. 怎么查找特定后缀名或前缀名的文件

Mysql

1. 数据库引擎事务隔离级别,串行化如何实现,数据库的隔离级别?四个。你平常使用的是哪个隔离级别。数据库隔离级别以及分别解决了什么问题

2. MySQL的存储引擎有哪些?它们之间的区别?你用的mysql存储引擎?为什么选择它?实现原理?

3. 怎么判断一个SQL语句有没有走索引?紧接着问explain知道哪些字段吗

4. mysql存储模型 区别 怎么看用没用索引 怎么判断sql语句好坏

5. 数据库中索引B+树

6. 一个手机应用要更改数据库,它的底层是怎么实现的?

7. sql查询过程

8. MySQL InnoDB存储引擎中的MVCC解决了什么问题,能说下MVCC的实现原理么

9. SQL语句经常写吧,那我给你出一道SQL题(分组求和排序)

10. 你认为什么情况下不应该建立索引

11. mysql有几种锁?怎么实现?

12. innodb事物的级别

13. b 树的结构?与二叉树的区别?与b树的区别?

14. 写过最复杂的sql, 手写代码: 统计各个科目考试最高分:最复杂的包括了sum、case、left join、group by,追问左连接和内联区别,没答上来

15. 聚簇索引跟红黑树

16. sql :给一个日期范围,统计每天入库的数据总量

17. sql语句里like和in关键字

18. sql语句,求平均分超过60分的学生学号

19. 数据库sql怎么优化20. 什么情况不能用索引?

21. SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2 什么时候会发生死锁;怎么解决死锁;N个资源怎么办?

redis

1. 你知道redis的什么东西

2. redis中zset,说了一下跳跃表的插入,删除过程;

3. 位图知道原理嘛(操作系统中的位示图还是bitmap?不太了解)

4. redis数据类型,redis的应用场景,为什么redis快

5. Redis的key的写入和删除的原理

6. 怎么保证Redis的高可用

7. redis数据结构?单线程还是多线程?

8. 用什么样的队列?你是怎么实现?我回答的redis的list实现的)这种队列有什么缺点?

9. 分布式锁;

mq

1. 你还用过rabbitMQ呀,它能够做什么?

2. rabbitMQ是怎么保证消息不丢的,从客户端—消息队列, 消息队列—服务器端的角度考虑

spring

1. 开源框架有哪些了解的 为什么用spring 为什么不用new就可以自动生产 能不能自己实现一个

2. spring security是干嘛的,原理是啥,jwt干啥的3. 后台用什么框架?ioc,aop,其他还有什么框架也可以做到ioc,aop(2333~不就spring?)4. Spring IOC,AOP,注解

设计模式

1. 双重检索单例

2. 设计模式分为哪三类,各有什么?设计模式,用过哪些设计模式,讲几个,设计模式和原则

3. 代理模式属于哪一类

4. 生产者消费者模式,生产消费者的,以及多生产者同步

5. 描述适配器,写单例

6. 单例模式,装饰模式,

分布式

1. 负载均衡的算法有哪些;

2. rpc dubbo的组件有哪些

3. 分布式事务,CAP定理,有没有使用过相关的产品

4. zookeeper了解吗

5. hbase索引的结构,kafka存储的结构,二进制文件的组织方式,kafka如何避免消息**丢失,zookeeper在kafka中是干啥的,kafka在zookeeper中存储的数据,zookeeper了解不,zookeeper的共识算法,分区后如何解决。

6. protobuf了解不,grpc了解不,用的什么协议,HTTP2和HTTP1区别,websocket建立连接过程

7. RPC你了解过吗?

8. 如何分布式存储?

算法

1. 排序算法有哪些,简述冒泡和归并排序,冒泡算法的优化,讲讲归并排序,冒泡的优化知道吗;回答相等不交换,还有flag做已排序标志的优化;直接插入排序,写一下伪代码或者说一下思路,插入排序,时间复杂度

2. 堆排序原理

3. 快排,快排是什么思想,快排的优化是啥,为啥这么做;

4. 字母排序

5. 100个数中找出想要的数

6. 一个数组分成2个相等或接近的子数组

7. 派单的最短路径问题

8. 很大的数据,内存放不下,如何快速找到中间值

9. 手撕栈

10. 链表找环 链表找环入口,不用双指针怎么做

11. 双向链表实现 ,写了个add()和add(index)的

12. 求数组的全排列

13. 中序遍历,递归非递归

14. 求四个数绝对值的最小值

15. 黑猫白猫,混在一起,如何把他们区分开? 黑白灰三种猫混在一起,如何按照黑白灰排好序? 还有两个小问题忘记了。

16. 如何用一个int值,表示三种状态?

其他

1. 给你10个tomcat你如何判断自己用哪个(容器?emmmm,求指点)位图知道原理嘛(操作系统中的位示图还是bitmap?不太了解)所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此可以大大节省存储空间。其实就是位示图为原型,01存储的,建议面试的时候知道多少说多少,知道什么说什么~

2. 序列化相关

3. 最后还是问项目,项目中的难点,是如何解决的?

4. c++编程搞过没,GPU编程了解不,用的什么GPU,GPU运算性能是什么决定的

5. 如果某个用户同时请求创建活动接口100次,如果防止它被重复创建?创建前查看该记录是否存在、使用锁、如果是分布式的使用分布式锁—这样解决了99.99%的问题。除了使用这些方案,还能使用什么方法解决吗?

6. 讲讲分布式锁的实现

7. io量很大,队列很长怎么办?

8. Q:觉得用过的模板解析引擎有什么不同的特征。A:用过JSP和Thymeleaf,JSP我就说适合Java程序员做前端,本质还是Servlet,生产环境下调试方便;Thymeleaf是SpringBoot项目碰到的,本质是EL,语法特殊,但是前后端传值、传对象方便。

9. 讲一下对jQUERY的使用感受A:研一的项目做过iOS开发,用OC做的webview APP,用到了jQuery Mobile做界面和事件控制,感觉很方便。 后面的Web项目主要用来进行Ajax操作,选择器很方便。

10. 硕士一个项目涉及到跨系统集成,要我在纸上画出集成逻辑架构,介绍一下开发用到的技术和业务环境。集成用的WebService,引入Apache旗下的Axis, 涉及到文件传输和多数据源配置。。。。

11. 用过eclipse、IDEA、Myeclipse,评价一下区别 代码提示、插件库、收费与免费、代码模板、资源消耗

12. 用过EJB和SSH,评价一下区别

13. 问了实习经历 了解分布式吗?

14. 你怎么用的websocket?

15. 想做安卓还是java后台?手机端安卓怎么开发的?

16. activity四大组件

17. 介绍一下service

18. APP的启动流程

19. Android事件分发机制

20. view的测量方法;

21. Android之间线程通信

22. 介绍一个你用心做的模块,项目流程,怎么理解异步同步,什么场景用;static能不能被重写?

23. MD5为啥要加盐(彩虹表·);UUID有多少位(32位)

HR面试场景模拟

1``:说说最自豪的一件事?最有意义的经历?

2``:说下为什么选择计算机行业?为什么放弃了本科四年+研究生三年的本专业?

3``:为什么选择vivo?有拿到其它的offer吗?

4``:为什么读研?

5``:你相比于科班的优点?

6``:询问父母情况,是否单身?7``:期望薪资

个人的实习实践经历等等,然后问了你觉得大学四年你最挫败的事情,详细讲一讲

然后重点来了接下来就是传说中的三保一问题了

1``、假如公司1,公司2,vivo同时发offer给你,你怎么选择?为什么?

2``、假如家里,公司,学校同时需要你去解决事情,你怎么安排,怎么考虑?然后问到了意向薪资(完全不知道怎么说,很尴尬啊,说的高了怕被拒,说的低了怕被 看不起,太难了),意向工作城市这些问题问一些为什么想加入vivo啊,了解vivo吗的问题,主要看你是不是真想加入vivo。其他都是闲聊

自我介绍?缺点?对学习成绩的评价,以及如何看待学习成绩?课余做什么?对vivo的了解如何看待加班?评价自己的学习能力?工作城市的选择是否有其他offer?问了自己的三大优点,还有自己的缺点

问了为啥跨专业,其实也不算跨专业,虽然我是生物医学工程的,但是我们平时就是做软件相关的;问了成绩情况 问了家庭情况。

家是哪的,父母干啥为什么写代码如何自学的深圳和杭州偏向那个给一个理由说服录用你六级成绩

你认为你觉得做过最有成就感的项目是哪个?以及遇到了什么困难,是怎么解决的

你了解vivo吗?你对薪资的期望是多少?你认为选择一个公司,什么重要你认为怎么对新人进行培养比较好你认为你要具备什么样的软件工程师素质才能胜任你的工作?你认为自己有什么优点?你在实习的公司工作的感受是什么?你有什么问题问我的吗?

1``、为什么选择读研?

2``、为什么选择开发岗不去做算法?

3``、研究生``3``年都做了什么?

4``、对vivo了解多少?

5``、从哪得到的招聘信息?

6``、为什么选择杭州?

7``、秋招还准备报哪几家?

8``、还有什么想了解的?

首先是自我介绍

自己感觉自己比较成功的项目经历项目具体背景以及自己在项目中的角色,项目开发团队在这次项目中,你遇到的问题,自己是怎么解决的为什么选择软开这个行业职业规划家庭情况以及个人情况谈谈自己最大的优点,自己是个怎样的人(也就是自己有什么优势)

1``.自我介绍

2``.专业不是计算机,但是研究方向是做java web,问了些情况

3``.实习经历

4``.意向工作城市

5``.有没有挂科过,本硕阶段学院排名

6``.进入vivo想学到什么7``.工作阶段收获最大的方面

1``.自我介绍

2``.你比其他人的优势在哪

3``.你期望实习带给你什么

4``.你了解vivo嘛

5``.你认为一个合格的软件工程师需要什么

6``.什么时候能来实习,能实习多长时间

1``.你的优势?

2``.你了解vivo吗?

3``.你来公司想提升自己什么?

4``.兴趣爱好

5``.实习时间

6``.有offer了吗?

1``.自我介绍

2``.平时在干些什么

3``.成绩怎么样,能保研吗

4``.保研还是工作

5``.你比其他人的优势在哪

6``.你期望实习带给你什么

7``.了解vivo吗

8``.你认为一个合格的软件工程师需要什么

9``.你什么时候能来实习

1``.自我介绍一下吧(又介绍

2``.让你比较有成就感的事情?为什么觉得这个让你比较有成就感

3``.你的优缺点是什么

4``.你考研考的最差的一门课

5``.为什么不想去南京

6``.编程能力给自己打几分

7``.还收到过别的公司的offer吗

中间在一个房间等了差不多10-15分钟的样子,然后去了hr房间先自我介绍。

hr就问了几个问题,只去南京吗?我说嗯,为什么?男朋友在南京,考研的吗?推免的,大小周能接受吗?我:可以

然后就问了一些基本情况问题,其实简历上都有,没办法,翻了个白眼之后只能继续给他说...

之后就让我问她问题,我说我没有啥问题

hr说这周就会通知,不管过没过(心里瞬间就有个底了)

1``,对vivo有了解吗(得亏新出了iqoo)

2``,还是项目,项目的职责(我是组长),遇到的问题,怎么解决的,有什么收获

3``,你是哪里人,深圳南京东莞你更倾向哪个城市?

4``,有没有其他offer(有一个小公司的,因为钱少 估计没成长就不准备去)

5``,你还有什么问题(我说了我在一面问过新员工培训的事,所以没其他问题)

然后就是没问加班有女朋友没? (问题顺序我记不清楚了,随便写了)你最喜欢哪些公司?会不会比较偏爱互联网公司?你喜欢深圳呀,如果分你去南京呢?你未来的规划?职业规划?(感觉就是确认下,你是不是不喜欢这种做硬件不是互联网的公司...提前准备个自然的点的说辞)

剩下记不清楚了,自我介绍和对简历的内容扯淡花了些时间。(以上大约15分钟)然后开始我问他问题。

1``.介绍一下自己

2``.为什么搞开发,有考虑过转行通信?(学校通信比较吊。。)

3``.为什么不考研?

4``.优点缺点,举个例子(所以别给自己挖坑。。)

5``.英语怎么样?四六级?

6``.大学成绩,学习情况?

7``.实习的情况,介绍一下

8``.想待在哪儿?南京,深圳?

9``.职业规划?

10``.你觉得什么公司比较好?(我说我觉得在南京vivo就很好。。。没敢说南京有三坑那个梗)11``.有女朋友没?(有,我头像就是我老婆。。)当然没有。为什么不找?学习太忙了,学校女生本来也很少。(其实就是找不到。。)

12``.你有什么问题问我?

总体流程差不多就是这个样子,还有一些细节部分就不写出来了,本来都是为了二面准备,结果也没整成,但还是把有限的经验给大家整理了出来,最后大家能理解多少,看个人悟性吧!

最后

给大家贡献一点福利,近期为面试准备整理的Java面经,这次限时给大家分享出来,需要的朋友可【点击此处】获取!如有打算近期面试的朋友们多抓紧了,别错过了哟~资料如下图:

 

以上是关于做开发5年,这8个高效开发好习惯我悟了🔥的主要内容,如果未能解决你的问题,请参考以下文章

统计了300位硬件工程师的工资,我悟了

VIVO一面竟然翻车,含泪整理了这些Java面经,看完我悟了

怒肝 200 道 Python 面试题,我悟了!

怒肝 200 道 Python 面试题,我悟了!

怒肝 200 道 Python 面试题,我悟了!

《高效程序员的45个习惯》