记录下面试时碰到几个很有意思的题目:
1、核心线程是在什么时候创建的?
2、主线程是如何捕捉到子线程的异常的?
3、StringBuilder会不会出现内存泄露?
4、JVM是如何区分数据、指针的?
5、StringBuilder的append方法源码级别?
6、服务器最多可以连接的线程数?
#程序员# #直言职场# #我要上微头条#
我好像都不会,你会几个?
C#程序员必须要掌握这些知识点之后才可以顺利通过面试,看看你掌握了几条:
1.值类型和引用类型
2.接口,抽象类
3.封装,继承,多态
4.迭代器
主要是对foreach的深入理解,以及对两个接口的深入剖析(包括它们的泛型结构):IEnumerable(可枚举类型),IEnumertor(可枚举数)
5.泛型
泛型保证了类型安全,避免了装箱和拆箱的操作,提高了性能,可复用性也得到了很大的提高,下面就来说说基本的泛型语法吧!
6.集合
7.反射
8.特性(Attribute)
9.委托和事件
10.线程
11.异步
12.Linq
13.IO操作
14.File操作
15.代码整洁之道
16.其他知识点
const和readonly的区别
is和as的区别
string和stringBuilder的区别
#程序员# #IT# #编程#
#学习# #知识# #面试#
以前的实习生面试:
1.说一下String、StringBuffer、StringBuilder的区别?抽象类和接口的区别?为什么重写equals方法要重写hashCode方法?
2.Java为什么能跨平台?JVM有哪些区域?
3.写个SQL,给张成绩表和学生表,字段和关系如下(略),查询所有及格学生的名字。
4.redis用来做什么?有哪些常用数据结构?
5.20分钟写个快排
现在的实习生面试:
1.AQS实现原理说一下?ReentrantLock底层实现原理说一下?synchronized实现原理和升级过程说一下?HashMap和ConcurrentHashMap实现原理说一下?
2.类加载机制说一下?JVM调优做过吗?说一下?CMS和G1收集过程说一下?
3.MVCC实现原理说一下?MySQL有哪些锁说一下?SQL优化说一下?主从同步原理说一下?分库分表做过吗?说一下?
4.SDS、跳跃表实现说一下?redis集群有哪几种模式说一下?哨兵说一下?一致性哈希说一下?redis分布式锁怎么实现、有哪些问题、怎么解决说一下?
5.打开leetcode,登录你的账号,选一道你没做过的hard,20分钟
#微头条日签#
你会在项目中使用lombok吗?lombok可以让Java开发者免于很多繁琐的代码编写工作,比如字段的get/set方法,构造函数,toString/equals方法,还可以帮我们构建builder模式,等等,确实能节省很多机械性的编码工作,提高开发效率。
但是也有开发者反对使用它,因为它需要在IDE中安装插件,侵入性会比较强,因为是自动生成,有些灵活性可能会受到损失,还有这就像个黑盒,有的东西可能不像大家想的那样工作,比如equals比较会不会包含父类中的字段呢?话又说回来,Spring这一堆注解哪个不是黑盒呐?
#为什么Java不支持运算符重载# Java这门语言设计的初衷就是可以让人以极低的成本学习。一切提高学习成本的玩意,滚粗!
事实证明,软件开发行业最大的成本来自于从业人员的培训成本。在Java出现之前的各种语言,面临的最大问题就是学习成本太高,比如C语言,指针操作会把初学者虐得不要不要的。
因此,Java设计者在设计之初就有意降低入行门槛,把一切对新手不友好的东西都屏蔽掉,或者由jvm底层处理。比如GC,让妈妈再也不用担心我不会管理内存了。
当然,负面影响就是Java长期处于鄙视链的底端,有点逼格的程序员都爱嘲笑Java语法的笨拙和啰嗦。
顺便一提,Java中其实有两个内置的操作符重载,就是+和+=,用于字符串拼接,编译器会自动把这两个操作符转换为StringBuilder的append操作。
一个在编码行业工作6年的程序员应该是什么样子,集合和链表的应用场景能不能不知道?
今天面试遇到这样一位程序员,年龄30岁,工作年限6年,第二学历毕业于天津大学软件工程专业。看似一切都应该是刚刚好,工作经验也有储备了,而立之年也应该稳重了。起初,我们两个人聊得非常好,说话客气,还非常的痛快。我们一起寒暄了几句,我就要求言归正传了。
他应聘的岗位是java软件开发,面试开发我们不可能不聊技术,电话面试也没有什么复杂的,面试内容如下:
1、工作时间也不短了对jvm有所研究吗?回答:没有,只是了解其中一部分内容。
2、对常用的数据结构,集合、链表知道他们的使用场景和时间复杂度吗?回答:吞吞吐吐,回答得不好。
3、讲讲字符串拼接的StringBuffer和StringBuilder的区别?回答:一个快,一个慢,为什么慢不知道。
这是一位在天津工作6年期望薪资9K的程序员面试过程,最基础的知识都说不出来,我不相信能写好代码,这种选手我建议转岗,绝对不适合做开发。您觉得这是面试造火箭吗?
问题1:final 在 java 中有什么作用?
[中国赞]final 修饰的类叫最终类,该类不能被继承。
final 修饰的方法不能被重写。
final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。
问题2: java 中的 Math.round(-1.5) 等于多少?
[中国赞]等于 -1,因为在数轴上取值时,中间值(0.5)向右取整,所以正 0.5 是往上取整,负 0.5 是直接舍弃。
问题3: String 属于基础的数据类型吗?
[中国赞]String 不属于基础类型,基础类型有 8 种:byte、boolean、char、short、int、float、long、double,而 String 属于对象。
问题4: java 中操作字符串都有哪些类?它们之间有什么区别?
[中国赞]操作字符串的类有:String、StringBuffer、StringBuilder。
String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。
StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。
问题5: String str="i"与 String str=new String("i")一样吗?
[中国赞]不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。
问题6:如何将字符串反转?
[中国赞]使用 StringBuilder 或者 stringBuffer 的 reverse() 方法。
#程序员面试#