面试2:亚信面试题(图+解)

在这里插入图片描述
----亚信面试题----

基础:

int表示的最大数据是多少?
10位数字 -2147483648~2147483647 故电话号码(11位)不能取int类型

讲解 :
java中int型数据取值范围是[-231,231-1]
int是Java中的8种基本类型之一,一个int值占4个字节byte,一个字节是8位bit(即8个二进制位),所以int型占32位。其中第一位是标志位,标志位为0表示正数,标志位为1表示负数,剩余的31位是用来表示数字部分的。
所以带符号32位int类型整数为-2147483648~2147483647

一个字节占几位?
8位

讲解 :
在UTF-8编码下, 一个中文 3个字节. 字母或者英文 1个字节.

equals()和 = = 的区别?
equals :是比较两个对象的值是否相同
= = : 是比较两个对象的hashcode是否相同

讲解 :
举个例子:int i=2; int j=2; char m=‘2’;
System.out.println(i = = j) true System.out.print( i = = m) false
equals ;是比较两个对象的值是否相同
==: 是比较两个对象的hashcode是否相同

string a = “abc” 和 string a = new String (“abc”) 区别?
记住一点:栈区存引用和基本类型,不能存对象,而堆区存对象。==是比较地址,equals()比较对象内容。

string a = new string(“abc”) 与 string b = new string(“abc”) = = 和 equals各返回什么?
==:返回false
equals:返回true

String str1 = “abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd”";如果后来又定义了字符串变量 str2 = “abcd”,则直接将str2引用指向String池中已经存在的“abcd”,不再重新创建对象;当str1进行了赋值(str1=“abc”),则str1将不再指向"abcd",而是重新指String池中的"abc",此时如果定义String str3 = “abc”,进行str1 == str3操作,返回值为true,因为他们的值一样,地址一样,但是如果内容为"abc"的str1进行了字符串的+连接str1 = str1+“d”;此时str1指向的是在堆中新建的内容为"abcd"的对象,即此时进行str1==str2,返回值false,因为地址不一样。

String str3 = new String(“abcd”)的实现过程:直接在堆中创建对象。如果后来又有String str4 = new String(“abcd”),str4不会指向之前的对象,而是重新创建一个对象并指向它,所以如果此时进行str3==str4返回值是false,因为两个对象的地址不一样,如果是str3.equals(str4),返回true,因为内容相同。

子类继承父类 父类哪些方法是子类不能继承的呢?
父类的私有方法不能被继承 但是可以通过反射获取
所有的private方法默认是final的,即不可继承的

多态具体解释
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
在这里插入图片描述
拓展:
多态性是对象多种表现形式的体现。

现实中,比如我们按下 F1 键这个动作:
如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
如果当前在 Word 下弹出的就是 Word 帮助;
在 Windows 下弹出的就是 Windows 帮助和支持。
同一个事件发生在不同的对象上会产生不同的结果。

多态的优点:
消除类型之间的耦合关系
可替换性
可扩充性
接口性
灵活性
简化性

多态存在的三个必要条件:
继承
重写
父类引用指向子类对象

java多线程
什么是:1个进程中可以开启多条线程,每条线程可以并行(同时)执行不同的任务

拓展:
提到多线程这里要说两个概念,就是串行和并行,搞清楚这个我们才能更好的理解多线程。

多线程的原理:
同一时间,CPU只能处理1条线程,只有1条线程在工作(执行)
多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换)
如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象
思考:如果线程非常非常多,会发生什么情况?
CPU会在N多线程之间调度,CPU会累死,消耗大量的CPU资源
每条线程被调度执行的频次会降低(线程的执行效率降低)

多线程优缺点:
1.多线程的优点
能适当提高程序的执行效率
能适当提高资源利用率(CPU,内存利用率)
2.多线程的缺点
创建线程是有开销的,增加开销
如果开启大量的线程,会降低程序的性能
线程越多,CPU在调度线程上的开销就越大
程序设计更加复杂:比如线程之间的通信,多线程的数据共享

什么是线程安全?
线程安全就是确保程序在多线程运行的情况下,程序能够按照预期运行,不会存在二义性的结果。
即不会出现重复的脏数据。

arraylist 和 linkedlist是线程安全的吗?
不是
线程安全的有:
数组类型 Vector

在arraylist 和 linkedlist 最后边插入或者删除数据,效率一样吗?
arraylist 数组 和 linkedlist 链表 效率不一样
arraylist 查询快 而 linkedlist 链表 增删快
原来 LinkedList每次增加的时候,会new 一个Node对象来存新增加的元素,所以当数据量小的时候,这个时间并不明显,而ArrayList需要扩容,所以LinkedList的效率就会比较高,其中如果ArrayList出现不需要扩容的时候,那么ArrayList的效率应该是比LinkedList高的,当数据量很大的时候,new对象的时间大于扩容的时间,那么就会出现ArrayList的效率比Linkedlist高了。

SQL:
一个student表 id,name,class

求一班和三班所有数据?
select * from student where class = “一班” and class = “三班”

得到这一张表中每个班级有多少人?(一班,二班) 分组
select class ,count(*) from student group by class

把所有数据按照学号升序降序查询?
select * from student where id order by id ASC|DESC

如何清除数据库表中所有数据?
禁用所有约束,删除所有数据,最后再启用约束,这样就不用花时间和精力去研究什么约束了,只需要编写一个简单的存储过程就可以自动完成这个任务。
下面来先看一个完整的脚本:
CREATE PROCEDURE sp_DeleteAllData
AS
EXEC sp_MSForEachTable ‘ALTER TABLE ? NOCHECK CONSTRAINT ALL’
EXEC sp_MSForEachTable ‘ALTER TABLE ? DISABLE TRIGGER ALL’
EXEC sp_MSForEachTable ‘DELETE FROM ?’
EXEC sp_MSForEachTable ‘ALTER TABLE ? CHECK CONSTRAINT ALL’
EXEC sp_MSForEachTable ‘ALTER TABLE ? ENABLE TRIGGER ALL’
EXEC sp_MSFOREACHTABLE ‘SELECT * FROM ?’
GO

id为3姓名改为李四
update student set name = “李四” where id = “3”

Linux

怎么查看一个文件的内容,如果文件内容比较多,用什么命令,比如我想看前10行?
tail -n +10 filename (文件名)

Linux 提供了许多命令来查看文件的内容,包 括 cat、more、head 和 tail,但这只是一个开始。

tail命令
tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个文件的最后几行显示到终端上,假设该文件有更新,tail会自己主动刷新,确保你看到最新的文件内容。

tail命令使用例子(filename文件名)
tail -f filename
说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

tail -n 20 filename
说明:显示filename最后20行。

tail -n +20 filename
说明:显示filename前面20行。

tail -r -n 10 filename
说明:逆序显示filename最后10行。

参数解释:
-f 该参数用于监视File文件动态增长。
-c Number 从 Number 字节位置读取指定文件
-n Number 从 Number 行位置读取指定文件。
-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。
-b Number 从 Number 表示的512字节块位置读取指定文件。
-k Number 从 Number 表示的1KB块位置读取指定文件。
-r 这个会似的按照现实内容相反的顺序现实,具体见下面例子
File 指定操作的目标文件名称

怎样创建一个文件1.txt?
make 1.txt

touch 1.txt(文件名 )

Linux命令拓展:
1 touch 1.txt(文件名 )
创建文件1.txt文件
2.ls
查看所有文件
3.vi 1.txt
vi为进入vim编辑器命令,意为在vim编辑器中编辑1.txt文件 可以输入a后,按tab键,可以自动补全a开头的文件
4.i
i意为insert为输入模式,你可以任意修改文件内容
5.先esc
退出编辑模式
: wq 保存并退出
: q 在未作修改的情况下退出!
: q! 放弃所有修改,退出编辑程序!
7.删除
rm
8.进入文件夹
cd

怎样查看磁盘空间?
使用df -h命令来查看磁盘信息

拓展:
df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
du 的英文原义为 disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小。
df -hl:查看磁盘剩余空间
df -h:查看每个根路径的分区大小
du -sh [目录名]:返回该目录的大小
du -sm [文件夹]:返回该文件夹总M数
du -h [目录名]:查看指定文件夹下的所有文件大小(包含子文件夹)

怎样查看系统cpu的使用率?
top命令可以看到总体的系统运行状态和cpu的使用率

如果看redis和tomcat日志用什么命令?

查看tomcat日志
1.切换到tomcat所在路径的logs目录下
cd /usr/local/tomcat/logs
2.执行命令查看日志
tail -f catalina.out
注定查看多少行日志
tail -300 catalina.out

查看redis日志
1.切换到redis所在路径的logs目录下
2.执行命令查看日志
tail -f SystemOut.log
3、怎么最快的索引到关键字,使用 vi SystemOut.log 打开日志文件;(vi命令等同于windows里的打开视图编辑器)
4、打开以后,使用“ / ” + ”关键字“ ,回车即可;

拓展:
//-----查看tomcat日志详解-----
一、查看tomcat所在路径
find / -name ‘tomcat’
二、进入tomcat所在路径的bin目录
cd /usr/local/tomcat/bin
1.tomcat启动命令
./startup.sh
2.tomcat停止命令
./shutdown.sh
三、查看tomcat是否已关闭
ps -ef|grep java
如果出现以下信息,表示tomcat未关闭
图略
1.使用kill命令可以直接杀死tomcat进程
kill -9 7010
2.继续使用命令查看tomcat是否已经关闭
ps -ef|grep java
如果出现以下信息,表示tomcat已经关闭
root 7010 1 0 Oct19 ? 00:30:30 [java]
四、查看tomcat日志
1.切换到tomcat所在路径的logs目录下
cd /usr/local/tomcat/logs
2.执行命令查看日志
tail -f catalina.out
注定查看多少行日志
tail -300 catalina.out
3.tail命令解析
格式:tail [必要参数][选择参数][文件]
作用:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
必要参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示的行数
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

  • 1
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一页纸,刚看没有多少内容,也就半张纸的试题,可仔细看起来题目还挺多。有指针和引用的区别与联系,哪个更安全?为什么?类和结构体有什么联系和区别,相互之间能不能继承?还考了整型,指针,引用的sizeof。纳闷了,如今的笔试怎么都有求sizeof一些变量的。记得平时写代码的时候,都直接用了,谁还看他的值是多少? 第二部分让说了c/s的程序流程,编码部分有一个是树的广度优先遍历,当时一看就懵了,已经不看数据接构好多年了,忽然看了树,反而不知道怎么写了。还有一个是以空格分隔的字符串倒序输出,比如:I am a student,输出结果为:student a am I.字符串的操作相对还是比较熟一点。还让写了两个函数,分别是动态实现二维数组,以及如何释放二维数组,记得当时在大学的时候,好多课的上机也用过,不过记得不太清了,这些年都忘的差不多了,不过还好,面试官没说什么,就是说了释放有些问题,估计分配是对的。 最后一部分是关于自身的问题,比如自己的优缺点,并举例,自己对自己的评价,打分,朋友眼中的自己等等。那个纸太小了,幸好我的字也小,否则还真装不下那么多内容。连个草稿纸都不给。 答完后,面试官看了看,然后就些问题讨论了些。我的一些概念性的东西不是很清楚,我这人不喜欢看文字性的描述,给个什么都明白了。他说我花了一个小时的时间完成,说男生做的会快些,然后又说女生能做成这样已经很好了。当时就想难道女生就该慢,我没有告诉他我答题的期间接了个电话,还有人来会议室搬椅子,我做完了还在想什么时候给他说。呵呵,那我也不算慢了。 他问了以前是否加过班,能加多少,本想说一年加多少次,后来想太少了,就说一个月加一两次。然后就看到他的嘴角稍微裂了裂。估计他们要加班多吧!之后又问了我所知道他们公司的一些信息,所做的业务。我说了一些基本的信息,又说了boss系统和bi系统。他就问我什么是boss系统,他可能以为我会不知道,没想到我早就上网查好了,脱口就说是:业务操作支持系统。其实boss系统包括四部分,我也查了而且也背过了,只是没有说。他想为难我但是没有达到目的,这已经足够了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值