Java语言基础+计算机网络+数据结构 知识手册

最近有不少Java同学陆续开始准备找工作,这篇文章算是推给他们让他们提前准备一下。

加油,美好的一天开始啦~

纯Java语言基础内容

1、常见集合源码分析。(以下是我们被问到过,能想起的所有知识点)

ArrayList:

1、初始化时机,初始化发生了什么。

对数组的初始化,如果看过源码会发现,是在add的时候,会先判断是否初始化数组,如果没有,则初始化数组。

2、扩容机制。

仍发生在add阶段,如果数组空间不足则出发扩容,扩容大小为1.5当前数组大小。

3、扩容时,使用什么样的方式创建数组。

Arrays.copyOf()。

4、add(int index, E element)和set(int index, E element)区别

看过源码会发现,add(index,value),value不会覆盖index数据,而是后移。而set则是覆盖index。

LinkedList:

1、结构是什么样子的。

双向链表。

2、addFirst(E e)/addLast(E e)的实现思路。

因为是双向链表,直接挂在Node的prev/拿到最后一个Node挂到next上。

3、和ArrayList的区别。

因为是链表,所以很容添加和删除;也因为是链表不容易随机去查数据(需要遍历)。

HashMap:

1、初始化时机,初始化发生了什么。

put的时候才会初始化Entry数组,计算初始数组大小(16),设置扩容时机:数组大小*0.75。

2、扩容机制(负载因子的作用)。

当数组使用率>扩容时机时,数组大小乘2,然后重新hash,使数据均匀分布。(负载因子,默认0.75,用于计算扩容时机)

3、如何解决冲突(冲突的Entry挂在链头还是链尾)。

链表法;挂在链表的头。

4、实现原理(1.8版本的改变了解么)。

Entry数组,且Entry是链表,put(key,value)时会先hash选出此<key,value>放在数组的哪个index中,如果已经存放那就挂在链头;取是一个反向hash的过程。1.8引入了红黑树,在链表长度>8时,将转为红黑树结构,
而非链表。

5、key重复的情况。

超出上一个key相同的Entry,覆盖value,并返回被覆盖的value。

2、同步相关

synchronized和ReentrantLock异同点。

都是重入锁;synchronized是悲观锁的实现,ReentrantLock是乐观锁。

synchronized和static synchronized的区别。

一个锁是对象的实例,一个锁是该类下的所有实例。

自旋锁、分段锁、乐观锁、悲观锁、重入锁的区别。

自行百度吧~一些概念

CAS原理;如何解决ABA问题。

自行百度吧~一种思想

volatile作用;如何保证原子性。

保证可见性和有序性(结合线程模型);AtomicInteger相关的类可以保证对应的基本类型的原子性。

原子性,可见性,有序性;Java中对应如何实现。

自行百度吧~

ThreadLocal原理。

内含一个Map,通过key可得到这个Map的实例,这个Map的key是ThreadLocad的实例,value是想要存放的值。

生产者、消费者模型。

适时阻塞和适时唤醒。

线程与进程的区别,线程的状态。

自行百度吧~

解释Happens-Before。

自行百度吧~

3、语言基础

final、static修饰类、方法、变量的作用。

自行百度吧~(final类型的变量,要么在声明时初始化,要么在构造方法里初始化)

拆装箱,int和Integer,Integer内部缓存问题。

因为自动拆装箱的存在,int转Integer,系统做了缓存处理(-128-127)的i,会直接返回对应的Integer,大于这个范围直接new。(FLoat,Double无缓存)

equals和==

==判断内存地址,equals根据不同类型的重写,自行处理。Object的equlas就是==。

4、JVM、CG、JMM相关

类加载机制,双亲委派机制。

可查看Java类加载机制,这篇大概、也许、可能就够了

线程模型。

image

程序计数器的作用。

记录当前线程执行到那条指令了。

各种垃圾回收的算法。

标记-清除、标记-整理、标记-复制。分代的思想。

如何判断对象可以被回收。

引用计数、GCRoot可达性。

计算机网络

HTTP请求报文,相应报文的内容。

请求:Accept-Language、Accept-Encoding...响应:Content-Type、Content-Length...

这类的,这些内容自行百度就好~

HTTP各种状态码的含义。

2XX、3XX、4XX、5XX。

TCP/UDP区别。

TCP:面向连接;UDP:不面向连接,尽可能发送。

访问一个链接会经历的过程;对应用到的协议,及含义。

可阅读我们之前关于《计算机网络》的推文。

为什么有了MAC还需要IP地址。

趣谈网络协议笔记(1)

数据结构

把数据结构单独抽出来是因为,它属于可以初期就能影响到我们开发者,不过在面试过程中,大多数不会直接询问关于数据结构的理解。而是基于数据结构的基础进行算法上边的刁难。这里说一些较为基础的数据结构思想和对应的算法。

基础的数据结构

栈,队列,链表,树

对应的算法面试题:

翻转栈

借用一个栈,将需要翻转的栈挨个弹出至借用栈,然后借用栈,挨个弹出至需要翻转的栈中即可。

判断俩条链表是否有相交,并找到交点

两个链遍历找的最后一个节点,俩条链节点相同则为有交点,然后向前逐个遍历,不相同的时候,那么就可以找到交点了。

将给定数组,排序为奇数在前,偶数在后

设置一个头指针,一个尾指针;头指针去找偶数,尾指针找奇数,找到后;俩个数交互。俩指针继续找。

单链表是否有环

这个快指针,一个慢指针去表里链表,如果俩个指针相等了,即为有环。

较为常见的算法题目:二分查找、快排、二叉树的遍历、二维数组匹配

尾声

这部分内容先到此结束,如果准备找工作的小伙伴,这些内容基本都能了解或者有很深的理解,那么面试这关:Java语言内容,以及数据结构,计算机网络部分将比较容易通过。

我是一个应届生,最近和朋友们维护了一个公众号,内容是我们在从应届生过渡到开发这一路所踩过的坑,已经我们一步步学习的记录,如果感兴趣的朋友可以关注一下,一同加油~

个人公众号:IT面试填坑小分队
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,635评论 0 11
  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,390评论 1 14
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 4,213评论 0 16
  • 【博言仁语】色即是空,空即是色,色不异空,空不异色,地上地下一体两面! 不要羡慕别人的成功,那是牺牲了安逸换来的;...
    聂仁博阅读 369评论 0 0
  • 这家是我吃过最好吃的烤窜!每天回来得来一串 一条好狗三个帮,一只边牧来跳桩! 好舒服啊,再给点劲 不过瘾?来,一边...
    搞笑精选app阅读 198评论 0 0