java

来源:互联网 发布:离散数学 编程 编辑:程序博客网 时间:2024/04/30 09:41

汇总型:http://blog.csdn.net/zhengchao1991/article/details/53894530

redis分布式锁:http://blog.csdn.net/zhengchao1991/article/details/53580639
性能优化好文章:http://blog.csdn.net/zhengchao1991/article/details/53579906
静态、动态代理,cglib概念好的文章:http://blog.csdn.net/zhengchao1991/article/details/53536289
堆排序: http://blog.csdn.net/zhengchao1991/article/details/53396349


1、maven相关知识
2、数据库索引结构等
3、数据库查询,三张表查询分数最高的一个学生。。。
4、cpu使用情况及分析


java基础:java集合、java.util.concurrent.*、java IO/NIO
               jvm:内存模型、gc收集算法、类加载、jvm内存溢出与性能优化


数据库:mysql基础、mysql性能优化、、redis、MyBatis


EJB:ejb注解、ejb事务处理、jax-rs、rest服务、session bean、


数据结构与算法:排序算法、常用经典算法、二叉树


web:jsp,html,jQuery,Servlet,


Spring:ioc   aop   事务处理   SpringMVC


设计模式:单例、适配器、抽象工厂、装饰、观察者


其他:加密、解密、http、UML




volatile和ThreadLocal解决了什么问题
synchronized和Lock的区别,以及底层实现原理
GC Roots的选择
SQL调优,explain,profile等
ejb深度了解
Spring mvc 核心是servlet 、struts2 核心是filter


1、类加载机制
2、压力测试+并发数
3、hashmap内部实现,hashtable、currenthashmap之间的关系
4、ESB平台的整个架构
5、索引的原理、实现的流程、什么时候失效
6、分布式文件系统hdfs、fastfs特点和区别
7、jvm内部原理+gc实现
8、redis的开发api和集群、主备等
9、线程池的使用
10、web多台主机的session如何处理
11、断点登录如何实现
12、Object对象中的方法
13、代码检查工具
14、1.5Lock中的特性
15、流量红包的实现
16、数据库(脏读阻塞)的概念和业务出现场景
17、数据库事务、锁
18、新增索引sql
19、慢查询
20、各种工具使用,怎么监控性能
21、threadlocal 
22、zookeeper的替代(consul、etcd)
23、分布式锁
24、设计模式有哪些,各个模式代码实现,业务应用场景是什么
26、同步方法和同步代码块
27、spring事务
28、哪些rpc框架
29、幂等
30、乐观锁、悲观锁,以及各自实现
31、Linux命令awk
32、request包头包含哪些信息
33、分库分表除了业务方向拆分还可以怎么拆
34、为什么分库分表(分表是为了单表数据量不会太大而影响查询;分库是为了不让请求全部落在一个库上导致压力太大)
35、select count(1)和select count(*)有什么区别,1和*分别代表什么
36、服务注册和服务发现
37、wait、notify、notifyall内部实现原理
38、两台机器网络通信首选rmi、socket比较重量级、http属于web层通讯
39、nio常用类、方法:
         ByteBuffer最常用(只是其中之一,IntBuffer、CharBuffer。。。)
         FileChannel
         clear()、limit()、put()、get()、position()、flip()
40、部署架构
41、order by 怎么优化
42、加索引的原则、单个索引和联合索引
43、oracle分页
44、锁lock分哪几种
45、reentrantlock怎么用?源码
46、整个rpc调用过程
47、redis持久化机制、几种数据类型、原子操作有哪些、查询redis其他info信息命令、
       事务及原理(multi和exec包起来)
48、zookeeper的节点属性(持久节点、持久顺序节点、临时节点、临时顺序节点)、paxos算法
49、JVM调优、gc调优设置
50、mq的原理、持久化、ack
51、awk、sed
52、SQL优化、执行计划里面属性除了index和alltable以外还有什么
53、redis分布式锁根本原理
54、堆栈分别保存对象和值的什么详细信息
55、线程池底层多个参数的含义
56、Linux命令(怎么查看用户所在组groups、怎么只知道端口的情况下查看进程pid、怎么查看文件数目ls | wc -w)
57、详细描述一下cms和g1
58、concurrenthashmap 1.8与1.7的区别
59、string为什么不可变
60、ZooKeeper本身有重复注册watcher、session失效重连、异常处理问题,可采用第三方客户端zkclient


程序员分类


首先我们要给程序员分个阶段,因为每个阶段的程序员在面试时考察点和招聘要求都是不一样的。按照工作经验大致可以分为三类:工作三年、五年和十年的程序员。三年是一个门槛,这是检验阶段,刚刚走出校园步入工作岗位,会不会有水土不服、是不是真的合适这个行业,三年的时间足够验证。如果不合适,入错了行,那么还来得及转行;如果是真的入对了行,那么这三年也积累了不少经验,技艺修炼到了另一个段位。在职业生涯中是一个重要转折点,可以根据自己的能力考虑进阶中小型公司的中层管理者或者是大公司的小组长、主管;工作五年和十年的以此类推。


接下来以工作三年的程序员为例,说明一下应该具备哪些技能才能在面试中脱颖而出。


一、关于项目经验

项目经验是程序员最宝贵的财富,不同于其他岗位,程序员很少要求有什么样的人脉资源,最重要的就是经手过的项目。面试官考察的主要就是以下几个方面:项目经验+基本技术+个人潜力,看看能给公司带来什么。简单提炼上文大意就是:


1. 项目是做什么的、都有什么功能,必须做到心里有数;

2. 项目的整体架构铭记于心,并且能在面试现场给面试官画出来,能够指出从哪里调用到哪里以及使用什么方式调用

3. 说明你负责的内容在整个项目中的重要性

4. 准确说明你负责的部分用到了哪些技术,当然如果能够说明整个项目的技术点更好。

二、关于专业技能

Java是应用最广的一门语言,这里也以Java为例,以下列举的知识点都是最基本的、必须要掌握的,当然如果你的知识点更广、知识掌握的更扎实,那一定是加分项,面试官印象会更好,当然对应的薪水也更高。

1. 基本语法
包括static、final、transient等关键字的作用,foreach循环的原理等等。

2. 集合
这个知识点很重要,是必问内容。基本上就是List、Map、Set,各种实现类的底层实现原理,实现类的优缺点。

3. 设计模式
众所周知,设计模式在工作中非常重要、而且很有用,面试中这一块的问题基本分为三个方向:
a. 准确说明经手的项目中用到了哪些设计模式以及如何使用
b. 主流设计模式的优缺点做到心中有数
c. 可以画出常用设计模式的UML图

4. 多线程
这也是几乎必问的一项,但是对于拥有三年工作经验的程序员来说,实现多线程已经非常小菜,所以这类问题应该不会问,会考察更深层的问题,比方说Thread和Runnable的区别和联系、多次start一个线程会怎么样、线程有哪些状态等等诸如此类。

5. IO
Socket IO相对来说还是比较important的,主要掌握以下几点内容:阻塞与非阻塞、同步与异步的区别,还要明白阻塞IO、非阻塞IO、多路复用IO、异步IO这四种IO模型,Socket IO怎样跟这四种模型相关联。以上都是比较简单的知识点,再难一些就是NIO的原理、NIO属于哪种IO模型、NIO的三大组成等等。

6. JDK源码
这绝对是加分项,回答得漂亮就能拿更高的薪水。下面是一些小编认为比较重要的集中代码,仅供大家参考:
a. List、Map、Set实现类的源代码
b. ReentrantLock、AQS的源代码
c. AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
d. 线程池的实现原理
e. Object类中的方法以及每个方法的作用

7. 框架
不用说,这也是必问的题目,但是个人感觉不能算是难题,只要实际操作到位,能够简单讲出几个常用的框架就可以,因为这里问的问题几乎都是实际操作方面的,这里不多做介绍了。


8. 数据库
这块比较重要的内容就是数据库性能的优化,要是这块知识点完全没有基础,根本不了解,建议你现在赶紧学起来,不然明年面试可能就危险了。
关于工作三年的程序员应该要掌握的知识点就先为大家总结到这里,不知道有没有解决你的疑问,我相信主要的知识点都已经包括了,如果你有更好的建议,欢迎留言补充。

事务的挑战:

两阶段提交
最终一致
base
cap
Paxos
last:

当你学会以上内容以后,这个时候你还不足以参加工作,你还需要继续深造。公司里为了提高开发的效率,会使用一些Java Web框架,因此你还需要学习一些开发框架。目前比较主流的是SSM框架,即spring、springmvc、mybatis。你需要学会这三个框架的搭建,并用它们做出一个简单的增删改查的Web项目。你可以不理解那些配置都是什么含义,以及为什么要这么做,这些留着后面你去了解。但你一定要可以快速的利用它们三个搭建出一个Web框架,你可以记录下你第一次搭建的过程,相信我,你一定会用到的。还要提一句的是,你在搭建SSM的过程中,可能会经常接触到一个叫maven的工具。这个工具也是你以后工作当中几乎是必须要使用的工具,所以你在搭建SSM的过程中,也可以顺便了解一下maven的知识。在你目前这个阶段,你只需要在网络上了解一下maven基本的使用方法即可,一些高端的用法随着你工作经验的增加,会逐渐接触到的。关于学习SSM框架的地址给大家推荐一个,这里面有视频,大家可以去观看。
################################################################################
################################################################################

举个例子,反射你要了解清楚的话,你是不是要搞明白JVM的类加载机制?网络IO要搞清楚的话,你是不是要清楚TCP/IP和HTTP、HTTPS?包括并发包,如果你要搞清楚的话,是不是要了解并发的相关知识?

IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。IO包和NIO包的内容相对来说不是很多,首先NIO模型要熟悉,特别是其中的selector一定要非常清楚它的职责和实现原理。其实NIO的核心是IO线程池,一定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为什么要这样设计?



前提条件负数:
十进制变二进制:原码--反码--加一(补码);
二进制变十进制:减一--反码--原码。


修饰符 当前类 同 包 子 类 其他包
public
protected ×
default × ×
private × × ×

留下足迹才美丽~

1 0
原创粉丝点击