2024年Web前端最新Java核心卷I学习笔记(一)_java核心卷i(1~5)总结,前端开发学习方法

Vue 面试题

1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?

算法

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

2)面向对象:Java将重点放在数据(即对象)和对象的接口上;举例木匠要做一个椅子,一个面向对象的木匠始终关注的是椅子,第二位才是工具,一个非面向对象的木匠,首先考虑的是用什么样的工具。

3)分布式  4)健壮性  5)安全性

6)体系结构中立,Java利用虚拟机,通过编译器生成一个体系结构中立的目标文件格式,这种格式经过编译,只要有java运行时系统,可以再多种处理器上运行。

7)可移植性 8)解释型  9)高性能 10)多线程 11)动态性

3、Java发展简史

1)Java起源:1991年由Patrick Naughton和James Gosling带领的Sun公司团队想设计一种语言,应用对象为有线电视转换盒之类的设备,这种设备内存和处理能力有限,这就要求语言小且紧凑;另外不同厂家处理器不一样,这就要求不能与任何特定体系捆绑在一起,这个项目被命名为“Green”。Gosling将这种域名成为“Oak”(橡树),后来因为Oak已经是计算机语言的名字,于是将其改名为Java。

2)探索:1992年,Green项目组发布第一个产品称之为“*7”,这个产品可以实现远程控制,遗憾的是Sun公司对这个产品不感兴趣,他们不得不去寻找新的方法和买家,将技术推向市场。这时候项目换了一个新名字“First Person公司”,花了一年多的时间也没有找到买家,1994年公司解散。

3)起步:这时候浏览器开始发展,为了展示java的超强能力,项目组用Java编写了HotJava浏览器,设计者让HotJava浏览器在网页中内嵌java代码,自此至今引发了人们对Java的狂热追求。

4)发展:1996年发布了不太好用的Java第一个版本1.0,后来的1.1弥补了很多明星的缺陷,大大的增加了反射能力和GUI编程的事件模型——当依然不好用;1998年发布1.2版本变得更加接近“一次编写,随处运行”的思想,之后Java有了三个版本移动端、企业版的、SE标准版。

5)崛起:2004年发布5.0,2006年发布java 6;2009年Sun被Oracle收购,2001年Oracle发布Java 7,其中只是做了一些简单改动;在2014年Java 8发布,在近20年终这个版本有了最大的变化。Java 8提供了一种“函数式”编程方式,并很容易的标书并发执行计算。

第二章 Java程序设计环境

1、基础概念

1)JDK Java Development Kit,编写java程序的程序员使用的软件

2)JRE Java Runtime Environment ,运行Java程序的用户使用的软件;

3)Java SE,Java ME,Java EE分别对应标准版、移动版、企业版;

4)Java 开始用1.2、1.3等来表示版本,后续为了反映Java的重大变化开始命名为Java 2,因此有了Java 2SE 5.0;但是从2006年Java版本得到了简化,后续版本标准版命名为Java SE 6/7/8;后续oracle为了解决一些bug发布的微小版本比如:Java SE 8u31,Java SE 8的第31次更新。

2、基础程序运行、安装、IDE环境略。

第3章 Java的基本程序设计结构

1、Java最基本的程序

/**
 *
 *@autor xlf
 *@date 2020/1/4
 */

public  class FirstSample{
    public static void main(String [] args){
        System.out.print("Hello World!");
    }
}

2、java注释,单行注释用“//”  ;多行注释 /**  …   */,如上文代码。

3、Java数据类型,java是一种强类型语言,这意味着每一个变量必须声明一种类型;在java中有8类基本类型(primitive type),其中4中整型(int、short、long、byte)、2中浮点型(float、double)、1种用于表示Unicode编码的字符单元char和boolean类型。

1)、特殊值,有三个特殊值表示溢出和出错情况:正无穷大(Double.POSITIVE_INFINITY,Float也有同样的值)、负无穷大(Double_NEGATTIVE_INFINITY)、NaN(不是一个数字,Double.NaN),注意所有的NaN都是不相等的。

2)特别注意:浮点数值不适用于无法接受四舍五入误差的金融计算,如System.out.println(2.0-1.1)  //输出结果0.8999999999,而不是人们想象中的0.9,这是因为浮点型采用的是二进制系统表示,而在二进制系统中无法精确的表示1/10。如果要非常精确表示应该用BigDecimal类。

备注,解释为什么二进制无法表示精确数字,更详细参考:https://blog.csdn.net/renwotao2009/article/details/51637163

这里以0.2为例:因为二进制只有0和1表示,某个位置上的数的意义:

è¿éåå¾çæè¿°

所以0.2表示只能用0+1/2+1/4+1/8+1/16…这些数字组合来表示0.2,正好等于0.2的一堆01组合就是表示0.2的二进制数字,但是很遗憾0.2以及很多数字无法找到正好的数字,只能无限的迫近(无聊或者有兴趣的可以自己试试),这就是为什么无法精确表达0.2。

4、常量声明,利用关键字final,eg: final double CM_PER_INCH=2.54;在Java类中,利用static final设置一个类常量,如果再加上public,这样其他类也可以使用这个常量。

5、字符串String类型

1)字符串不可改变,这是因为Java文档中将String类对象成为不可变字符串。Java将字符串存放在一个公共存储池中,字符串变量指向存储池中相应的位置;如果复制一个字符串变量,原始字符串与复制字符串共享相同的字符(即两个变量,指向存储池中同一个对象,存储池中只有一份对象,二者公用);这样设计是作者初衷认为字符串提取、拼接等这样的操作很少,实际程序应用中改变字符串的情况很少;如下文代码中,三者输出结果一致,即在内存池中共用了一份对象。

  public static void main(String [] args){
       String str="Hello";
       System.out.println(str.hashCode());
       String str1="Hello";
       System.out.println(str1.hashCode());
       String str2=str;
       System.out.println(str2.hashCode());			
    }

2)字符串比较,请用equals,不要用==;equals检测两个字符串是否相等;检测两个字符串是否放在同一个位置上,对于有些情况就会出错;不要用==来比较字符串给自己找麻烦,如下文看似相等的不确定因素

  public static void main(String [] args){
       String str="Hello";
       System.out.println(str=="Hello"); //true,所有"Hello"共用存储池的一个对象,存储位置相同
       System.out.println(str.substring(0, 3)=="Hel");//false,因为str.substring(0,3)并不是在存储池中,因此不等;
        System.out.println(str.substring(0, 3).equals("Hel"));//true,equals只比较内容是否相等
    }

3)空字符串与Null,有时候声明一个字符串为null,使用字符串前先检查字符串是否为null,然后利用str.leng==0或者str.equals(“”);

4)字符串的构建器StringBuilder:有时候字符串需要一些较短的字符构成,例如一句话由单词构成,这时候采用字符串拼接的方式效率会比较低(根据字符串不可改变的原理,每次构造都会新建一个字符串,会占用存储,而且过程字符串并不是想要的,没有任何意义),这时候可以用StringBuilder来构建。

    StringBuilder strbuilder=new StringBuilder();
    strbuilder.append("hello");
    strbuilder.append("world");
    strbulider.toString();

5)StringBuffer,它是StringBuilder,从5.0开始引入StringBuilder,查看JDK二者的API是完全相同的;区别StringBuffer效率较低,但是允许多线程的方式添加、删除字符的操作;因此如果单线程中应该使用StringBuilder,而日常一般多为单线程。

6、输入与输出

1)输入,利用Scanner对象类构造输入流,支持多种形式的输入,如file、InputStream等;Scanner提供nextLine、nextInt()等多种方法读取内容。

      
       /**
        * 个人信息.txt
        * 张飞
        * 32
        * 浙江 杭州
        * 男
        */
  public static void main(String [] args) throws FileNotFoundException{

       File file=new File("D:\\0learn\\个人信息.txt");
       Scanner sc=new Scanner(file);
       String name=sc.nextLine();
       System.out.println("name:"+name);//读入一行
       System.out.println("年龄:"+sc.nextInt());//读入一个整型,还有很多其他类型
       System.out.println("省份:"+sc.next());//读入下一个单词
       System.out.println("县市:"+sc.next());//读入单词
       System.out.println("性别:"+sc.next());//读入//下一个单词
    }

2)格式化输出,利用System.out.printf来实现;先举例看如何使用:

数据结构与算法

这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。

  • 二叉树层序遍历
  • B 树的特性,B 树和 B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 知道的排序算法 说一下冒泡快排的原理
  • Heap 排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

几种常见的排序算法,手写

  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

[外链图片转存中…(img-Imtr4XAu-1714913263049)]

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值