您的位置:首页 > 职场人生

java工程师基础知识面试

2017-07-19 23:43 190 查看
最近思考到的初(中)级java开发工程师基础知识可以考察的点,理论,实践都有涉及。个人理解并不是要这些点都掌握才算合格的java工程师,面试的时候也不是要全问一通,抽取一些组合提问都合理。只是列出这些点,暂时没有准备问题的答案

java语言基础知识

1个char类型数据占几个字节

jdk1.8以前,单线程环境下字符串拼接用什么合适,StringBuilder,为什么

hashCode方法的作用,重写hashCode方法注意什么点

equal方法的作用,重写equal方法注意什么点

java对象引用的理解,对象深/浅拷贝

并发知识考察

单个java程序中,多线程之间实现一个 等待/通知模型,使用

Lock/condition可以,使用synchronized-wait/notify也可以。 线程池的简单使用,参数设置

violate的作用,解决什么问题,基本原理;提及一个常用场景,提示 AtomicInteger内部的实现,线程启动停止位

ThreadLocal的作用,有什么好处,基本原理;提及一个常用场景

简述currentHashMap的结构,认识

JVM基础知识

简述JVM中的内存空间布局,新生代,老年代,新创建的一个对象的生命周期

gc的作用,触发gc的时机,副作用

java的线程模型,用户级线程还是内核级线程,什么比例关系,线程栈中保存什么,和公共堆中数据的交互

查看JVM运行状态的几个常用命令,jstat, jstack, jmap, 简单说说了解

java进阶问题

简述java泛型,是怎么个实现方式,和object类型比有什么优势

简述java动态代理是怎么实现的

简述java类加载器,双亲代理,这样的好处

基础数据结构&基础算法

二分查找,实现,时间复杂度

快速排序,实现,时间复杂度

二叉树,二叉树中序遍历,实现,时间复杂度

数组的循环队列,实现

优先队列(大顶堆),简述低层数据结构,插入删除逻辑,时间复杂度

两个数组求并较差,最初级的两层循环,学会使用set降低时间复杂度

简易的bitmap

hashmap的简单实现原理,填装因子,基于链表的碰撞检测,扩容,rehash

数据库(Mysql在InnoDB下)

创建选课系统相关表(tb_student, tb_course, tb_student_course, tb_student_score)

查询某个课程所有选课的学生

插叙某个课程所有几个的学生

查询一个学生的所有课程的分数

建立索引有什么需要注意的点

索引怎么和数据库中的数据结构对应起来

什么时候垂直分表,什么时候水平分表

数据库集群环境下,写后读,如果不在是事务中,会有什么影响

Linux常用命令

grep

wc

tail

sort uniq

sed awk

top

ps

less vim cat

access.log日志中,查询某个ip的请求次数;请求次数最多的10个ip,找出请求最多的一个小时

网络原理

tcp建立链接和断开链接

服务端建立socket(tcp)链接写法,客户端建立socket(tcp)链接写法

udp和tcp的区别

说说http协议和tcp协议之间的关系

常用设计模式

生产者-消费者

观察者

状态机

装饰模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面试