面试问题记录

java基本数据类型

整数类型 short btye int
浮点类型float double
char 字符
布尔类型 boolean true flase

byte 8位有符号数 -2的7到2的7 -128-127 占一个字节
short 16位 2的正负15 -32768~32767 占两个字节
int 32位 2的正负31 占4个字节
long 64位 2的正负63 占8个字节
double 64位 占8个字节
float 32位 占4个字节
char 16位 0到2的16-1 占2个字节 采用unicode编码 前128字节与ASCLL兼容
boolean 1位 true 和false 1个字节

double>float>long>int>short>byte
从小转换到大 从大转换到小 或char和其他6中类型转换,须强转
js数据类型

number string boolean null undefind symbol

js声明对象:

内置函数:
var obj=new object();
obj.name=“m”;
obj.age=12;
obj.say=function(){
console.log(this.name+this.age);
}
console.log(obj);
obj.say;
自定义函数:
function Student(name,age){
this.name=name;
this.age=age;
this.say=function(){
console.log(this.name+this.age)
}
}
var obj = new Student(”m“,12);
console.log(obj);
obj.say();

js 声明变量:

//声明与赋值不分离
<script type="text/javascript">
var correctUsage = "m"
alert(correctUsage)<script>
//声明与赋值分离
<script type="text/javascript">
var name;
name=”s“;
alert (name)
<script>

使用 let

let声明变量在{}中使用,变量的作用域限制在块级域中
window.onliad = function(){
var ul = document.getElementById(”“) //js获取dom
for(var i=0;i<=5;i++){
//创建一个对象
var li =doucument.createElement(“li”);
//li标签内内容设置为:Itemi
li.appendChild(document.createTextNode(”Item“)+i);
let j = i;
//绑定点击事件
li.οnclick= function(){
alert(“Item”+i+“is clicked”);

} ;
ul.appendClild(li);
}
}

js中变量的三种声明方式 var let const

定义方式:
var 变量名;
var message;or var message=12; or var message =‘hi’,age=18;
var 声明变量的作用域是函数作用域。即在函数内部声明变量,在调用这个函数䣌时候
创建该变量,调用结束后销毁变量。

function foo(){
console.log(age);
var age=26;
}
foo();//输出undefind

等价于
function foo(){
var age;
console.log(age);
var age=26;
}
foo();//输出undefind

let 关键字声明变量:

定义方式: let 变量名
let message;
let message=10;
let message =‘hi’,age=12;

let 声明变量的作用域:
let声明变量的作用域是块作用域。

const关键字声明变量:
定义方式:const 变量名;

注意:使用const声明变量时,
1.必须初始化变量的值。
const age=12;
2.不能修改该值。尝试修改会导致运行报错

const age = 16;
age=30 //TypeError:给常量赋值

3.不能重复使用

const age = 16;
const age =30;//SyntaxError

const声明变量的作用域:
块作用域

const name=‘s’;
if(true){
const name=‘n’;
}
conlose.log(name); //s

const声明应用对象
如果const 变量引用是一个对象,那么可以修改这个对象内部的属性。

const 与 for 循环:

  1. 不能用const声明迭代变量,因为迭代变量会自增。
    for(const i=0;i<5;i++){
    consloe.log(i);
    }//typeerror 给常量赋值
  2. 待补充

let 与const的区别?

let与const都是只在声明所在的块级作用域有效
let声明的变量可以改变,值和类型都可以改变,没有限制。
const声明的变量不能改变值,所有const一旦声明了变量,就必须立即初始化,不能留到后面赋值。

const a = 2;

简述java多态?

Thread和Runnable的区别?

thread 和runnable 的实质是继承关系,没有可比性。
无论是使用Runnable 还是 thread , 都new Thread ,然后执行run 方法。
用法上,如果有复杂的线程操作需求,那就选择Thread ,如果只是
简单的执行一个任务,那就实现runnble。

实现runnable接口比继承thread类所具有的优势:
1.适合多个相同的程序代码的线程去处理同一个资源。
2.可以避免java中的单继承限制。
3.线程池只能放入实现 runnable或 callable类线程,不能放入继承thread 的类。
4.增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。

在启动多线程时,需要先通过Thread类的构造方法Thread(Runnable target)构造出对象,
然后调用Thread对象的start()方法来运行多线程代码/

start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运动态,运行有操作系统决定。
实际上所有的多线程代码都是通过运行Thread的start()方法来运行的。
所有不管是扩展Thread类还是继承Runnable接口来实现多线程,都需要通过Thread 的对象
的API来控制线程。
short a=128,btye b =btye(a);问ab值?

key: a=128,b-128
byte取值访问 -128-127

Java中的集合类包括ArrayList、LinkedList、HashMap等,下列关于集合类描述正确的是()
A. ArrayList 和LinkedList 均实现了LIst接口
B. ArrayList 的访问速度比LinkedList快
C. 随机添加和删除元素时,ArrayList 的表现更佳
D. HashMap实现Map接口,它允许任何类型的键和值对象

解析:

ArrayList 和 LinkList 都实现了List 接口, HashMap实现了set接口。

ArrayList 在内存中基于数组实现,可以通过位置找到地址查找快,增加删除需要
修改其后面的所有元素所有慢, LinkList 在内存中基于链表存放,查找慢,修改快

HashMap 运行任何键值对,即使是null也是支持的
有一个Hashtable类,是不允许null作键和值的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值