自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 Java开发,40+常见问题汇总

本文精选了一些常见、实用的问题,并附上我的个人解析。1.背下这300字,面试就能加薪!点我看解析2.面试官:你还有什么想问的?点我看解析3.我是JAVA初级,有必要学架构设计吗?点我看解析4.高并发都要学哪些技术?点我看解析5.为什么好学生,学不好编程?点我看解析6.如何理解java中的构造方法?7.如何让if..else..同时执行?8.面试全对,却没offer,什么情况?点我看6~8解析9.分布式和微...

2020-06-09 18:11:10 575

原创 2020年6月Java面试实录

受疫情影响,很多IT公司降薪、裁员,招聘的压力也随之加大。以下,记录一位逆流而上,在上周跳槽成功同学的面试经历,希望对大家有用。(已征求本人同意)。 为避免一些不必要的麻烦,本文对面试官的提问进行了简化和整理。 应聘者:二本学位;2年开发经验;男; 应聘企业:某国内软件百强企业 以下,是本次面试期间,技术官的提问,以及我对其中要点的解析。1.介绍一下你的情况,重点说说简历上没写的内容。解析:积极、正能量。2.简历上写的,你做...

2020-06-09 17:36:43 7790

原创 为什么好学生,学不好编程?

老师好,今年我大二,软件工程专业。我的高数、英语等课程都学的很好,考试成绩也很高。但唯独学校开的C语言学不懂,即使花了很长时间看懂了一点,仍然也写不出来代码。而且,我同宿舍的很多人都有这种情况,她们从中学到现在,各科也都学的很好,但唯独学不好编程。请问,是什么原因造成的啊?答:一些好学生,写不了代码;而一些“差学生”写程序却很厉害。这个问题,我在很多大学都遇到过。以下,谈谈我的观点。(本文仅表达个人观点,无意冒犯)第一,“好学生”的学习方法,不适合学编程。很多好学生,是...

2020-06-05 11:09:55 1673 2

原创 测评 | 2左移3 的效率高于2*8 吗?

问:有一道面试题:2*8怎样运算效率最快?参考答案是:位移运算最快,即计算2*8最快的方法是:2 << 3 。我的问题是:我目前也接触了不少项目,但经常能看到 乘除运算。为什么很多项目里,不使用性能最快的位移运算呢?答:网上的“面试宝典”,不知道是哪一年流传出来的了。即使是“202x年最新版面试宝典”,也基本换汤不换药。换个角度,这种“面试题”级别的性能问题,JAVA设计者们肯定是早都发现了。因此目前的JVM内部必然已经做了优化,几乎不用我们在 运算上 思考性能问题了。.

2020-05-27 11:40:22 1108

原创 只知道new?Java中存在4种引用

我们经常通过new来创建对象。实际上,指向new的引用,也可以称为“强引用”,如下中的ref,就是一个强引用。Objectref=newObject();强引用是我们最常使用的引用类型,也是四种引用级别中最高的一个。四种引用,以及它们的强弱关系如下。强引用>软引用>弱引用>虚引用1.强引用强引用,强在哪里?强在“JVM即使内存溢出,也不会让GC去随便的回收强引用对象所占用的内存空间”。其原因也容易理解,如果GC将上述的ref回收了,那么n...

2020-05-26 10:02:49 716

原创 技术测评: IO vs NIO

IO是阻塞式IO,NIO是非阻塞式IO。我们也经常将NIO称为IO的升级版,那么NIO究竟比IO的性能高了多少呢?以下通过“文件复制”案例进行测评,待复制文件大小是185MB。1)通过IO复制文件import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;/* * Created by 颜群 */pu

2020-05-26 10:01:40 249 1

原创 Java小白到大神的心路历程(框架)

本文是“Java心路历程”的第四篇,前三篇请戳:1.Java小白到大神的心路历程(Java SE)2.Java小白到大神的心路历程(Web前端)3.Java小白到大神的心路历程(数据库)每一个javaer,都对“开源框架”又爱又恨。爱她,因为她封装了大量的底层代码,可以帮助我们简化代码量;恨她,因为她“太善变”了,以“访问数据库为例”,一会是JDBC、一会是hibernate、一会是mybatis,一会又可能是Spring Data+JPA。因此,常听到有人调侃,“软件技术的更...

2020-05-22 14:51:34 1827 1

原创 Java小白到大神的心路历程(数据库)

本文是“Java心路历程”的第三篇,前两篇请戳:1.Java小白到大神的心路历程(Java SE)2.Java小白到大神的心路历程(Web前端)本文聊的是关系型数据企业中最常见的关系型数据库是MySQL和Oracle,但不知道为什么,很多大学还在学习Sql Server(有的还是2008版)。数据库难不难?我觉得,这可能跟你的老师有着很大的关系(针对不同的学校,老师的授课方案可能不一样)。有同学说“数据库最简单啊,把select、delete、update、insert学完就行.

2020-05-10 20:39:26 553

原创 高并发都要学哪些技术?

请问老师,我想系统的学习一下高并发,请问都需要学习哪些技术呢?答:参见以下: 首先,得有全局观,得知道“高并发”要解决的是系统中哪些部位的瓶颈(CPU不足,还是内存不够?web服务器扛不住,还是数据库并发量太小……)。因此,需要学习“架构设计”(至少要了解一下)。 并发的基础是多线程,所以“多线程”少不了。 多线程可以用基础的方式手写,也可以使用高级一点的多线程库:JUC(至少)。 很多新版的jdk,提供了并发编程的工具类,因此需要学习(或者查阅一下)jdk8及后续版

2020-05-10 20:36:36 842

原创 我是JAVA初级,有必要学架构设计吗?

我是JAVA初级,有必要学架构设计吗1.请问老师,我目前还在初学阶段,勉强能够实现CRUD功能。对于基础内容和ssm、spring boot等框架,在百度谷歌的帮助下,也能使用。最近,总能看见一些公众号,或者视频里面提到“架构设计”或“高性能XXX设计”。对于我这样,实现一些基础功能都比较吃力的,还有必须去学习架构设计吗?答:我觉得是很有必要的。用鸡汤来解释,就是“人总要打破自己的舒适区”。用现实来讲,只能实现一些CRUD等基础功能,是没有任何价值的。任何一个在IT企业上班的技...

2020-05-09 11:19:04 423

原创 使用Google Guava实现生产者与消费者问题

“生产者消费者程序”是并发编程的基础,也同时是一道热点面试题。除了使用传统的Lock、Synchronized等加锁方式实现以外,还可以使用一些三方工具库实现。今天介绍的是如何使用google guava库中的Monitor实现“生产者消费者”问题。google guava是一个非常实用的并发类库,非常建议每一位开发者使用。以下,就是使用google guava中的Monitor实现生产者消费者的具体代码。importcom.google.common.util.concurrent.Liste.

2020-05-09 11:17:02 963

原创 发送请求时,postman正常,微信小程序失败?

问题背景:前端发送一个json对象(字符串格式),后端用springMVC接收。问题是:后端代码不变,前端用postman发送数据时一切正常;但如果前端用微信小程序发送,后端就无法接收到数据(不报异常,但接收到的属性都是null)。以下是具体问题情况:(1)后台代码:@RequestMapping(value="addUser",method=RequestMethod.POST)publicResultaddUser(@RequestBodyUseruser){......

2020-05-09 11:04:55 4072 3

原创 通俗解释前后端分离?

1.请问老师,什么是前后端分离技术?我本来还懂一些,但上网一查,越查越晕。能通俗的介绍一下吗?答:顾名思义,前后端分离的核心,就是让前端开发者和后端开发者各自独立,即前端开发者只写前端,后端开发者只写后端,二者不需要太多的言语沟通,就能合作完成一个项目。如何做到这一点?我认为,核心有两点:(1)前后端开发者,均采用"REST风格"开发。简单的讲,就是发送的http请求要支持POST、DELETE、PUT、GET四种请求方式。因为这四种方式,分别对应增删改查四种操作,具体是:POST对应“增.

2020-05-09 10:58:36 1122

原创 答疑 | 前后端分离,如何接收json数据?

json1.颜老师,在前后端分离的项目中,后端如何接收前端发来的json数据?我记得是@RequestBody,但有时候会报错。答:当使用SpringMVC接收json数据时,需要区分json的数据格式,具体如下:(1)若前端发送的是Json对象,那么后端需要用@RequestParam注解;(2)若前端发送的是Json字符串,那么后端需要用@RequestBody注解;(通...

2020-05-09 10:55:35 3084

原创 答疑 | 如何优化CAP?毕业设计如何选题?

CAP理论如何优化1.老师新年好,分布式CAP理论本身存在不足。那么在实际使用时,有办法弥补吗?答:回顾一下,CAP是任何一个分布式系统,都必须重点考虑的设计原则。“CAP”三个字母的含义如下:C:一致性(强一致性):在分布式系统中,所有节点的数据都要时刻保持一致。例如,系统由S1、S2两个节点组成,当你向S1插入一条数据时,这条数据会在短时间内自动同步给S2。注意,这里强...

2020-05-07 10:06:57 222

原创 限流、RPC、软引用、超卖

本文摘选的是极客时间和慕课网中学生给我的留言。极客时间 - 秒杀限流提问出处 https://time.geekbang.org/dailylesson/detail/1000440131.老师您好,如果是使用通用网关来进行限流的话,如何细化到对每个接口进行限制?谢谢答:您好,对api接口限流的话,可以使用google guava封装的令牌桶算法就可以实现。或者使用漏桶算法、...

2020-05-07 10:04:00 173

原创 答疑 | Java中五种创建对象的方式,SSDB

创建对象的几种方式1.除了new以外,还有哪些创建对象的方式呢?答:在java中,可以通过以下几种方式创建一个对象。(1)new 构造方法() ;(2)使用newInstance()方法,此方法的返回值就是一个对象。不过,需要注意的是,在JDK的java.lang.reflect.Constructor和java.lang.Class两个类中,都存在着newInstan...

2020-05-07 09:58:56 245

原创 答疑 | boolean类型占几个字节?

boolean占几个字节老师,今天面试官问我java中,boolean类型占几个字节。我当时没答上来,回去查资料,发现boolean类型没有一个准确的说法,怎么办呢?答:(文章略长,如果觉得解析过程麻烦,可以直接翻到末尾,看加粗字体的结论)这种概念性问题,最权威的就是查阅官网资料。Oracle官方已经在官网对基本数据类型,所占的字节数进行了说明,https://docs.o...

2020-05-07 09:56:32 875

原创 Spring核心干货1 - 版本特性与IoC

1.Spring历史Spring是于2003 年兴起的一个轻量级的Java 开源框架,由Rod Johnson 在其2002年的著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。2.Spring各版本简介Spring 1.x :时代背景:SSH(Struts2+Spring+Hibernate)流...

2020-05-07 09:53:32 218

原创 分布式和微服务的区别

分布式和微服务的区别1.颜老师,分布式和微服务有什么区别呢?网上说啥的都有,越看越晕了。答:分布式的核心就一个字:拆。只要是将一个项目拆分成了多个模块,并将这些模块分开部署,那就算是分布式。如何拆呢?有两种方式:水平拆分,或垂直拆分(也称为“横向拆分”和“垂直拆分”),具体如下:水平拆分:根据“分层”的思想进行拆分。例如,可以将一个项目根据“三层架构”拆分成表示...

2020-05-07 09:50:57 4381 3

原创 面试官:你还有什么想问的?

在面试结束时,很多面试官喜欢问一句“你还有什么想问的?”根据一些大厂技术官朋友的经验,应聘者主要分为“刚需型”和“改善型”两种。对于不同类型的应聘者,建议回答的方式可能完全不一致。本文主要针对“刚需型”进行分析。(以下分析,均源自一些面试官朋友的口头聊天,未经证实,大家参考即可)1.刚需型:应聘者是大学刚毕业,或者目前急需找一份工作总原则:不犯错就行了。加分:...

2020-05-07 09:45:08 1056

原创 如何复制数组?高效、优雅

复制数组1.颜老师,如何复制数组呢?除了for遍历以外,有高效的方法吗?答:如果数组的元素数量不多,任何一种复制数组的方式都没什么差别。如果数组中包含了大量元素,就确实得考虑效率问题了。有哪些方式呢?(1)使用你提到的for,以及while等循环遍历赋值(中规中矩,性能一般)(2)思考,如何才能高效?之所以说for等循环性能一般,是因为java在执行时必然会借助于jvm虚拟机,而j...

2020-05-07 09:40:39 1054

原创 三层架构与MVC模式

MV模式和三层架构几乎是Java开发者每天都要接触的最基础、也是最核心的架构知识了。但总有人将二者分不清楚,希望本文能够帮助到你。MVC模式MVC模式是软件工程中常见的一种软件架构模式,该模式把软件系统(项目)分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。使用MVC模式有很多优势,例如:简化后期对项目的修改、扩展等维护操作;使项目的某一部...

2020-05-07 09:39:19 1053

原创 背下这300字,JAVA面试就能加薪!

问:有很多同学经常问:我只对Java基础和数据库比较熟悉,其他Java Web和各种框架等都是似懂非懂。我这种情况,当面试官问项目经验时,如何回答?答:如果是面试,面试官通常不会从头到尾的,认真听完你说的每一句话。也就是说,你说了什么、说了多少并不是特别重要的。重要的是在你的描述过程中,一定要有亮点,要有那种让面试官听了之后立刻眼前一亮的感觉。对于你这种情况,即使只会基础知识,也是可以出...

2020-05-07 09:36:07 326

原创 基础 | 零基础编写第一个Java程序

1.准备开发环境(1)下载jdk根据操作系统类型(windows/linux/mac,32位或64位)下载相应版本的jdk这里提供windows64位的jdk下载链接链接:https://pan.baidu.com/s/1fefOfV57XDZdT5jfcXQ8Ag提取码:5z19其他版本JDK可到官网下载:https://www.oracle.com/technetwor...

2019-12-22 13:04:02 337

原创 面试题 | 使用HashMap实现大数据日志处理

每个网站都有一个专门记录访问数据的日志文件,记录着各个用户访问时的IP、时间等信息,类似以下格式。IPDate192.168.1.12019.10.12172.17.63.1622019.02.1310.11.123.212018.11.02...题目...

2019-12-22 13:00:47 362

原创 基础 | 用for循环实现万年历(附视频)

题目:输入年份和月份,程序自动输出该月份的月历。例如,输入2019年10月,则输出下图:已知条件为:1900年1月1日是星期一。分析:根据”1900年1月1日是星期一”这个条件,我们可在草稿纸上画出1900年1月的月历,如下图我们假定“1900年的1月1日是第1天”从图中可以发现输出形式是7天一循环,具体如下:1900年的1月1日是周一,第1天,(...

2019-12-22 13:00:06 1363

原创 减少延迟、缓冲区、static

减少MySQL主从同步的延迟1.在做MySQL主从同步的时候,如何减少主从之间的延迟?答:主从同步产生延迟的原因,大致有3种:(1)负载过高解决办法:水平扩展MySQL,减轻每个MySQL服务的并发量;加入缓存等;(2)网络延迟解决办法: a.设置switchType=2,根据心跳监测的延迟情况,自动切换节点。b.使用5.7版本后...

2019-12-22 12:58:32 367

原创 基础 | 一道题彻底搞懂二重循环

本文通过一道习题,讲解做二重循环习题的思路题目:使用二重循环打印如下图形:分析:首先要明确我们需要打印的种类有:字符串”*”,字符串””(空格)。比如第一行,先打印了4个空格””,然后打印了一个”*”。现在分析一下每行的具体打印情况:第0行:先打印4个空格,然后打印1个”*”第1行:先打印3个空格,然后打印3个”*”第2行:先打印2个空格,然后打印5...

2019-12-22 12:57:53 563

原创 一道三目运算符的题目

请说出以下程序的运行结果:publicstaticvoidmain(String[]args){intn1=1,n2=2;System.out.println(n1==n2?100.0:200);System.out.println(n1==n2?'A':66);System.out.println(n1...

2019-12-22 12:46:28 1405

原创 基础 | JVM、JRE和JDK

JVM:Java Virtual Machine(Java虚拟机),包含了Java最核心的类库。JRE:java runtime environment (java运行环境),包含了JVM和一些常见的Java运行类库,即JRE=JVM+常见运行类库。最大特点:安装了JRE之后,只能运行java程序,但不能开发java程序。因为JRE中没有包含开发者编译Java的相关工具。JDK:java ...

2019-12-22 12:42:33 99

原创 Java小白到大神的心路历程(Web前端)

本文是“Java心路历程”的第二篇,第一篇请点击右侧这篇文章:Java小白到大神的心路历程(Java SE)1.HTML/CSS在学完Java SE之后,学不懂HTML/CSS的原因只有一个:你自己不想学。但如果HTML/CSS是你的第一门接触编程语言,最大的障碍不是难,而是你还没有编程的思维方式,唯一的解决办法就是练习(注意,只能是练习;听课、看书的效果都不如自己练习好)。...

2019-12-22 12:41:59 594

原创 Java小白到大神的心路历程(Java SE)

万事万物皆有其发展规律,学习Java也不例外。以下是我根据教学经验,总结出来的小白在学习Java各阶段时的心路历程,当你在学习期间欣喜、困惑时,不妨看一看,也许这些都是必经之路。使用Java完成第一个Hello World根本不关心什么Java的发展史、JDK配置的原理,只想照着书(或跟着老师)把第一个Hello World运行出来。大多数学生,不论用什么办法,还是能够成功运行的...

2019-12-22 12:41:14 585

原创 面试全对,却没offer?

构造方法1.颜老师,如何理解java中的构造方法?答:顾名思义,构造方法主要用于“构造”出一个对象。平时说的,类可以产生一个对象,实际就是类通过“new + 构造方法”产生了一个对象,例如Person per = new +Person构造方法()。构造方法的最大特点就是,没有返回值。构造方法具体有以下几个作用:(1)可以通过关键字new构造出一个对象。(2)当给对...

2019-12-22 12:36:54 1097 1

原创 服了,list.add()也会报错!!!

1.什么时候用StringBuilder?颜sir,我好像只在“面试宝典”中看到过StringBuilder,其余时间都没有使用过。什么时候会用到StringBuilder呢?答:String的引用值不能改变,因此如果遇到类似以下频繁更改String引用值的时候,就需要考虑使用StringBuffer或StringBuilder。Stringstr="";for(in...

2019-12-21 21:40:22 1148

原创 synchronized有禁止指令重排序的功能吗?

1.颜老师,volatile可以禁止指令的重排序功能。那么synchronized有这个功能吗?我百度、谷歌都查不到准确的说法。答:百度、谷歌都查不到,很大程度说明这个问题没有意义。重排序是指JVM为了提高执行效率,会对我们编写的代码进行一些额外的优化。敲重点:重排序所实现的优化不会影响单线程程序执行结果1.inta=100;2.intb;3.b=20...

2019-12-21 21:39:57 1620

原创 JAVA技术面试指导

技术面试时,需要准备什么?本文从“必备项”和“加分项”两个角度分析,教你如何拿下高薪offer。一、必备项0.自我介绍 表达流畅,不要太差即可1.基础坑:【答案很标准】面试时的回答,一定不要背网上《面试大全》中的标准答案,一定要有自己的思想 (哪怕有少量错误) 。常见的题,一定要提前准备好。例如,以下列举的几乎都是必考题目:arraylist/hashmap...

2019-12-21 21:39:28 366

原创 InterfaceA是接口,new InterfaceA[2]正确吗?

interfaceInterfaceA{}如上代码,InterfaceA是接口类型的。那么new InterfaceA[2]正确吗?||||||||||答案:正确。本题的考点是:对象数组。对象数组实际存放的不是对象本身,而是对象引用的地址。先看以下代码。Objectobj=newObject();...

2019-12-21 21:38:57 577 1

原创 同一行代码,在Java和C中的执行结果却不同

intj=100;j=j++;以上两行代码,在Java中的运行结果是100,在C/C++中的运行结果是101。可见,是不能从逻辑的角度来理解的。根本原因是,各种开发语言对j=j++的处理机制不同。本文通过反编译手段,分析一下java的执行过程。java完整代码如下。publicclassjPlusPlus{publicstaticvoid...

2019-12-21 21:38:16 545 1

原创 还在用构造方法给属性赋值?

如何给一个类中的属性赋值?静态方法?构造方法?setter?也许都不太合适,本文介绍一种推荐的方式:使用Builder构造器。先回顾一下传统方式存在的问题。1.构造方法和静态方法如果有10个属性,你能记清它们的顺序吗?如下。//创建对象时,使用构造方法给属性赋值(使用静态方法的与之类似)publicvoiddemo(){Personperson...

2019-12-21 21:37:04 926 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除