Java 可以做到用 SpringBoot 做 web 开发。较熟悉 MySQL 优化,读过一部分 Redis 源码。刷完了极客时间的《数据结构与算法之美》,会用几个设计模式。
1
pray123 2019-11-13 17:08:44 +08:00
为啥不转 go 呢
|
2
salamanderMH 2019-11-13 17:14:13 +08:00 20
Hashmap 源码级掌握,扩容,红黑树,最小树化容量,hash 冲突解决,有些面试官会提出发自灵魂的审问,比如为什么是红黑树,别的树不可以吗;为什么 8 的时候树化,4 不可以吗,等等
concureentHashMap,段锁,如何分段,和 hashmap 在 hash 上的区别,性能,等等 HashTable,同步锁,这块可能会问你 synchronized 关键字 1.6 之后提升了什么,怎么提升的这些 ArrayList 优势,扩容,什么时候用 LinkedList 优势,什么时候用,和 arraylist 的区别 等等 基本类型和包装类型的区别,涉及自动装箱和拆箱,怎么做的,原理 String,StringBuffer,StringBuilder 哪个是安全的 字符串编码的区别,被问到过,我觉得比较容易被忽视的一个点 什么是泛型,怎么用泛型 static 能不能修饰 threadLocal,为什么,这道题我当时一听到其实挺懵逼的 Comparable 和 Comparator 接口是干什么的,其区别 多态的原理是什么,感觉这个很容易被问到 接口和抽象类,面试官问我是怎么理解的,我说接口对应功能,抽象类对应属性,然后面试官给我说了他的看法,说抽象类更偏向于一种模板~ 然后又交流了一下各自的想法 如何通过反射和设置对象私有字段的值 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么 synchronized 的实现原理以及锁优化? volatile 的实现原理? Java 的信号灯? synchronized 在静态方法和普通方法的区别? 怎么实现所有线程在等待某个事件的发生才会去执行? CAS ? CAS 有什么缺陷,如何解决? synchronized 和 lock 有什么区别? Hashtable 是怎么加锁的 ? List,Map,Set 接口在取元素师,各有什么特点 如何线程安全的实现一个计数器 生产者消费者模式,要求手写过代码,还是要知道的 单例模式,饿汉式,懒汉式,线程安全的做法,两次判断 instance 是否为空,每次判断的作用是什么。 线程池,这个还是很重要的,在生产中用的挺多,四个线程池类型,其参数,参数的理解很重要,corepoolSize 怎么设置,maxpoolsize 怎么设置,keep-alive 各种的,和美团面试官探讨过阻塞队列在生产中的设置,他说他一般设置为 0,防止用户阻塞 cyclicbarrier 和 countdownlatch 的区别,个人理解 赛马和点火箭 线程回调,这块 被问过让我设计一个 RPC,怎么实现,其实用到了回调这块的东西 sleep 和 yeild 方法有什么区别 volatile 关键字,可见性。 乐观锁和悲观锁的使用场景 悲观锁的常见实现方式:lock synchronized retreentlock 乐观锁:CAS MVCC 读写锁的实现方式,16 位 int 的前八位和后八位分别作为读锁和写锁的标志位 死锁的条件,怎么解除死锁,怎么观测死锁。 希望大家能够好好看一下反射的原理,怎么确定类,怎么调方法 RPC 框架,同步异步,响应时间,这些都被问到过,还让设计过 同步,异步,阻塞,非阻塞 在深信服的面试中遇到过,最好再找一些应用场景加以理解 |
3
skymei 2019-11-13 17:45:22 +08:00
楼上牛逼
|
4
kely 2019-11-13 17:52:05 +08:00
1 年前端,1 年 Node.js ,1.5 年 PHP,我现在也想转去写 Java,感觉自己做的有点杂
|
5
szq8014 2019-11-13 17:56:06 +08:00
目测会引来一堆 phper 喷你,一部分也会喷 java 然后劝你转 golang
|
6
liyihang 2019-11-13 17:59:56 +08:00
做好降薪的准备
|
7
ywlvs 2019-11-13 18:25:11 +08:00
@salamanderMH 成功劝退众人。
|
8
Jimmy2Angel 2019-11-13 19:06:18 +08:00 4
下面这些开个胃先
## JAVA 基础 1. HashMap 的源码,实现原理; JDK8 做了什么优化 2. HashMap 扩容机制,为什么都是 2 的 N 次幂 3. ArrayList 和 Vector 的区别,扩容机制等 4. CopyOnWriteArrayList 原理 5. HashSet 和 TreeSet 原理 6. ArrayBlockingQueue 和 LinkedBlockingQueue 区别 7. 集合迭代器的原理 8. 传值和传引用的区别 9. 动态代理 10. JDK8 ConcurrentHashMap 的原理 ## 多线程 1. 创建多线程的方式,以及线程的状态转换 2. 线程的中断机制 3. ThreadPoolExecutor 初始化参数; Executors 静态方法 4. synchronized 的使用方式及原理 5. 偏向锁、轻量级锁、自旋锁等优化 6. ReentrantLock 的特点及 AQS 原理 7. Semaphore、CountDownLatch、CyclicBarrier 等使用 8. ThreadLocal 的原理、与 Thread 类的关系、以及内存泄漏问题 9. volatile 的原理及内存屏障相关 10. Lock 接口有哪些实现类,使用场景是什么 11. 悲观锁,乐观锁,优缺点,CAS 有什么缺陷,该如何解决 12. ABC 三个线程如何保证顺序执行 13. 生产者消费者模式的实现方式 14. 如何实现控制线程在某段时间内完成,不完成就撤销 ## JVM 1. JVM 的内存区域 2. 字符串常量池相关 3. 对象的内存布局,涉及到锁的部分 4. 类加载的过程,以及双亲委派机制、自定义类加载器 5. GC 常见算法,CMS 以及 G1 的垃圾回收过程,CMS 的各个阶段哪两个是 Stop the world 的,CMS 会不会产生碎片,G1 的优势 6. 标记清除、复制和标记整理算法的理解以及优缺点 7. eden survivor 区的比例,为什么是这个比例,eden survivor 的工作过程 8. JVM 如何判断一个对象是否该被 GC,可以视为 root 的都有哪几种类型 9. 强软弱虚引用的区别以及 GC 对他们执行怎样的操作 10. Java 是否可以 GC 直接内存 11. 常用的 JVM 调优参数 12. GC 优化的步骤 13. 当出现了内存泄漏或内存溢出,怎么排错 14. CMS 和 G1 收集过程 ## 数据库相关 1. 常见的数据库优化手段 2. 索引的优缺点,以及索引选择 3. B+树索引的原理 4. 数据库连接池 5. MySQL 的锁机制 6. MVCC 和 ReadView 7. InnoDB 的一些特性 8. 数据库三范式 ## 计算机网络、操作系统 1. TCP,UDP 区别 2. 三次握手,四次挥手,为什么要四次挥手 3. 长连接和短连接,连接池适合长连接还是短连接 4. OSI 七层模型 5. 用户态和内核态 ## 数据结构和算法 1. 红黑树、AVL 树 2. B 树、B+树 3. 排序算法 4. 一致性 Hash 算法,一致性 Hash 算法的应用 5. TopK 问题 6. 判断链表是否有环 ## 缓存相关 1. redis 支持的数据类型及使用场景 2. redis 单线程为什么还那么快 3. redis 如何存储一个 String 的 4. redis 的过期策略 5. redis 的部署方式,主从,集群 6. redis 的哨兵模式,一个 key 值如何在 redis 集群中找到存储在哪 7. redis 持久化策略 8. 缓存穿透、缓存击穿、缓存雪崩问题及解决方法 9. 缓存和数据库一致性问题 ## 框架相关 1. Spring 的常用注解及作用 2. Spring Bean 的生命周期 3. Spring 怎么解决单例 Bean 的循环依赖问题 4. Spring 对于 IOC 的扩展点有哪些 5. Spring AOP 的原理,及代理对象调用过程(责任链+递归调用) 6. Spring 的事务机制,及执行流程 7. Spring 使用了哪些设计模式 8. Mybatis 基于接口完成查询的过程及原理 9. Mybatis 的一级缓存和二级缓存 10. Quartz 是如何完成定时任务的;集群同步机制 ## 分布式相关 1. 分布式事务的控制 2. 分布式锁如何设计 3. 分布式 session 如何设计 4. dubbo 的组件有哪些,及其作用 5. dubbo SPI 机制;远程接口调用过程 6. dubbo 支持的协议及序列化方式 7. dubbo 的负载均衡和容错策略 8. zookeeper 的 ZAB 协议工作原理 9. zookeeper 的 Watcher 机制 10. zookeeper 的 Watcher 机制 11. zookeeper 的数据存储 12. zookeeper 的负载均衡算法 13. rocketmq 的模块功能 14. rocketmq 的高可用及高性能 15. elasticsearch 的系统架构及读写过程 16. elasticsearch 在数据量很大的情况下(数十亿级别)如何提高查询效率啊 17. eureka 的相关原理,和 zookeeper 的比较 |
9
Kamiyu0087 2019-11-13 19:16:41 +08:00
看了楼上的,感觉如果我去面 JAVA 都没过的希望的嘛
|
10
salamanderMH 2019-11-13 19:47:22 +08:00
@capping 我这是知乎上收藏的一篇文章复制过来的,看看能不能给你写简历什么帮助。
|
11
luopengfei14 2019-11-13 20:09:45 +08:00 via iPhone
你就说你既会 PHP,也会 java。PHP 时间长,java 时间短一些。
|
12
luopengfei14 2019-11-13 20:10:37 +08:00 via iPhone
或者这两种语言一起做,就说有老项目是 PHP,新项目是 java。
|
13
pink123 2019-11-13 20:11:20 +08:00
@Kamiyu0087 JAVA 你没有机会的,还是老老实实做 PHP 吧
|
14
sagaxu 2019-11-13 20:12:34 +08:00 via Android
面试跟工作是两码事,照面试内容来,最低也是年薪百万
|
15
0NF09LJPS51k57uH 2019-11-13 20:36:00 +08:00
javaer 求你转 go 吧,我肚子好饿啊
|
16
Jimmy2Angel 2019-11-13 20:37:49 +08:00 via Android
@phantomzz javaer 求你也转吧,我这会饿的有点头晕眼花了都
|
17
DaBingShui 2019-11-13 21:27:46 +08:00
@Jimmy2Angel javaer 求你也转吧,我这吃不上饭了都
|
18
areless 2019-11-13 21:43:36 +08:00 via Android
不论 php 还是 java 亦或 ruby~亦或 c#~~~首先你得有理念。理念诞生于经历,诞生于成长~~~比如通过区块链(炒币)认知单体 gpu 构架甚至比完整的宏观 pc 构架要快,比如通过不断折腾 arm 手机认知到 arm 集群的优越性,比如通过 mysql 的瓶颈认知 key value nosql 优点,比如~~~但是语言从来不是瓶颈啊,我十几年的经历告诉你不断更换编程语言除了求职需求完全没有培养形成你理念的任何东西啊。我用 gpu 加显存构建我的 sql 数据库比 nosql 高效~~~用 rsa 加 aes 构建前端软 ssl 无法让人破译。你要形成你的理念,08 年,我的理念是 100 万数据的单文件 kv 数据库比机械硬盘上的 mysql 高效,幼稚而天真,但这是事实。
|
20
longline 2019-11-14 08:21:02 +08:00
楼上两位都在劝退...
|
22
wuwukai007 2019-11-14 09:19:42 +08:00
go 的工作岗位很少,即便在北上广
|
23
lyzy 2019-11-14 09:56:17 +08:00 via iPhone
杭州 PHP+GO+运维 的岗位也没有 JAVA 多
|
24
Amit 2019-11-14 10:41:31 +08:00
看了楼上两位老哥的题目,我感觉我是假 javaer
|
25
puppet0520 2019-11-14 11:53:47 +08:00
来做前端吧~_~
|
26
wo642436249 2019-11-14 13:14:06 +08:00
实际工作会增删改查就行了,其他的用到的时候再学,再复制粘贴代码就行
|
27
Kontinue 2019-11-14 14:27:44 +08:00
java 就是这样,上面提到的题目如果不会,互联网压根进不去。
|
28
yzhfd 2019-11-14 20:32:19 +08:00
我就是成功从 PHP+GO 转 Java 的,说实在的,转语言挺麻烦的。
主要是你前期已经有积累了,有了几年的工作经验,就想着往架构师方向找, 薪资要求也期待比较高。所以,建议要么放低薪资要求,从初级 Java 工程师做起, 要么去一家对语言要求比较宽的公司从事 Java 开发。还是要看运气了。 |