华为面试题库.docx

上传人:b****5 文档编号:29212334 上传时间:2023-07-21 格式:DOCX 页数:44 大小:1.15MB
下载 相关 举报
华为面试题库.docx_第1页
第1页 / 共44页
华为面试题库.docx_第2页
第2页 / 共44页
华为面试题库.docx_第3页
第3页 / 共44页
华为面试题库.docx_第4页
第4页 / 共44页
华为面试题库.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

华为面试题库.docx

《华为面试题库.docx》由会员分享,可在线阅读,更多相关《华为面试题库.docx(44页珍藏版)》请在冰豆网上搜索。

华为面试题库.docx

华为面试题库

一、华为题库

1)tcpip应用层之上的几个协议

具体说明内容:

OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。

OSI模型有7层结构,每层都可以有几个子层。

OSI的7层从上到下分别是

7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层;

其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。

其中传输层包含tcpudpspx等协议

Tcpip模型是一系列网络协议的总称。

Tcpip模型的四层结构:

这些协议分成四个层次,上一层的协议都以下一层的协议为基础。

从下到上的四层,连接层(LindLayer)、网络层(InternetLayer)、传输层(TransportLayer)、应用层(ApplicationLayer)。

1、连接层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等。

数据链路层。

这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。

再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip协议的编写者没有任何的关系。

发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。

这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。

2、网络层负责分配地址和传送二进制数据,主要协议是IP协议。

3、传输层负责传送文本数据,主要协议是TCP协议、UDP协议

4、应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。

TCP/IP详解学习笔记

(1)-基本概念

互联网IP地址:

现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分成四组,也就是常见的255.255.255.255的样式。

IPv4标准上,地址被分为五类,我们常用的是B类地址。

具体的分类请参考其他文档。

需要注意的是IP地址是网络号+主机号的组合,这非常重要。

32Bit分成四组,一组8bit

2^8=16*16=256

域名系统

域名系统是一个分布的数据库,它提供将主机名(就是网址啦)转换成IP地址的服务。

RFC

RFC是什么?

RFC就是tcp/ip协议的标准文档,在这里我们可以看到RFC那长长的定义列表,现在它一共有4000多个协议的定义,当然,我们所要学习的,也就是那么十几个协议而已。

端口号(port)

注意,这个号码是用在TCP,UDP上的一个逻辑号码,并不是一个硬件端口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了而已。

  应用编程接口

现在常用的编程接口有socket和TLI。

而前面的有时候也叫做“Berkeleysocket”,可见Berkeley对于网络的发展有多大的贡献。

TCP/IP详解学习笔记

(2)-数据链路层

数据链路层有三个目的:

∙ 为IP模块发送和 接收IP数据报。

∙            为ARP模块发送ARP请求和接收ARP应答。

∙            为RARP发送RARP请 求和接收RARP应答

ip大家都听说过。

至于ARP和RARP,ARP叫做地址解析协议,是用IP地址换MAC地址的一种协议,而RARP则叫做逆地址解析协议,在tcp/ip协议的后面章节会介绍它们(在局域网里面用ARP协议可以很容易的搞瘫痪网络哦)

数据链路层的协议还是很多的,有我们最常用的以太网(就是平时我们用的网卡)协议,也有不太常见的令牌环,还有FDDI,当然,还有国内现在相当普及的PPP协议(就是adsl宽带),以及一个loopback协议。

联系linux里面的ifconfig-a命令,这个命令通常会得到如下的结果

其中,eth0就是以太网接口,而lo则是loopback接口。

这也说明这个主机在网络链路层上至少支持loopback协议和以太网协议。

以太网(Ether-net)的定是指数字设备公司( DigitalEquipmentCorp.)、英特尔公司(IntelCorp.)和Xerox公司在1982年联合公布的一个标准,这个标准里面使用了一种称作CSMA/CD的接入方法。

而IEEE802提供的标准集802.3(还有一部分定义到了802.2中)也提供了一个CSMA/CD的标准。

这两个标准稍有不同,TCP/IP协议对这种情况的处理方式如下:

·           以太网的IP数据报封装在RFC894中定义,而IEEE802网络的IP数据报封装在RFC1042中定义。

·            一台主机一定要能发送和接收RFC894定义的数据报。

·            一台主机可以接收RFC894和RFC1042的封装格式的混合数据报。

·            一台主机也许能够发送RFC1042数据报。

如果主机能同时发送两种类型的分组数 据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC894分组。

可见,RFC1042在TCP/IP里面处于一个配角的地位。

这两种不同的数据报格式请参考教材。

ppp(点对点协议)是从SLIP的替代品。

他们都提供了一种低速接入的解决方案。

而每一种数据链路层协议,都有一个MTU(最大传输单元)定义,在这个定义下面,如果IP数据报过大,则要进行分片(fragmentation),使得每片都小于MTU,注意PPP的MTU并不是一个物理定义,而是指一个逻辑定义(个人认为就是用程序控制)。

可以用netstat来打印出MTU的结果,比如键入netstat-in

.cnblogs./fengzanfeng/articles/1339347.html

上文摘自上面的网址

上面的是tcpip协议的补充

 

2)继承子类父类的问题extends关键字

理解继承是理解面向对象程序设计的关键。

在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。

在Java中不允许多继承。

子类可以覆盖父类的方法。

Java中是单继承,一个子类只能有一个直接父类。

子类包含于父类同名方法的现象称为方法重写,也成为方法覆盖。

Override。

方法的重写遵守“两同两小一大”规则,两同,方法名相同,形参列表相同。

两小指的子类返回值类型应该比父类方法返回值类型更小或者相等。

子类方法声明抛出的异常应该比父类方法声明抛出的异常类更小或者相等。

一大,子类的访问权限应该比父类方法更大或者相等。

覆盖方法和被覆盖的方法要么都是类方法,要么都是实例方法。

3)java的集合对象arraylistlinklisthashsethashmap的区别

arrayListLinkList

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

 

  2.对于随机访问get和set,ArrayList优于LinkedList,因为ArrayList可以随机定位,而LinkedList要移动指针一步一步的移动到节点处。

(参考数组与链表来思考)

Arraylist适合查询linkedlist适合增删改

  3.对于新增和删除操作add和remove,LinedList比较占优势,只需要对指针进行修改即可,而ArrayList要移动数据来填补被删除的对象的空间。

ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references)。

例如我们可以用ArrayList来存储一系列的String或者Integer。

那么ArrayList和LinkedList在性能上有什么差别呢?

什么时候应该用ArrayList什么时候又该用LinkedList呢?

 

java中ArrayList、LinkList区别

hashset和hashmap

.importnew./6931.html

4)Stringbuffer和String的比较

.cnblogs./rpp506815950/archive/2012/11/07/2758646.html

5)接口的说法

不能有proteced修饰的方法不能有static修饰的方法都是publicabstract修饰的方法都是publicvoid类型一个类能实现多个接口

javaeedevelop.iteye./blog/1513135

接口里不允许定义静态方法,接口支持多继承。

接口的主要用途是被实现类实现

6)数据库连接池的原理

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。

预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。

更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。

7)collectionIterator接口

arraylisthashsethashmaplinklist

8)使用jdbc链接java的code

JDBC连接各种数据库的方法(经典)

Sqlserver

1.Public void FindAllUsers(){  

2.       //1、装载sqlserver驱动对象  

3.       DriverManager.registerDriver(new SQLServerDriver());               

4.       //2、通过JDBC建立数据库连接  

5.       Connection con =DriverManager.getConnection("jdbc:

sqlserver:

//192.168.2.6:

1433;DatabaseName=customer", "sa", "123");              

6.       //3、创建状态  

7.       Statement state =con.createStatement();             

8.       //4、查询数据库并返回结果  

9.       ResultSet result =state.executeQuery("select * from users");

10.       //5、输出查询结果  

11.       while(result.next()){  

12.              System.out.println(result.getString("email"));  

13.       }              

14.       //6、断开数据库连接  

15.       result.close();  

16.       state.close();  

17.       con.close();  

18. }  

1)连接Oracle8/8i/9i/10g/11g(thin模式)

Class.forName("oracle.JDBC.driver.OracleDriver").newInstance();

Stringurl="JDBC:

oracle:

thin:

localhost:

1521:

orcl"      //orcl为Oracle数据库的SID

Stringuser="test";

Stringpassword="test";

Connectioncon=DriverManager.getConnection(url,user,password);

2)连接DB2数据库

Class.forName(".ibm.db2.jcc.DB2Driver");

Stringurl="JDBC:

db2:

//localhost:

5000/testDb";

Stringuser="test";Stringpassword="test";

Connectioncon=DriverManager.getConnection(url,user,password);

3)连接MySQL数据库

Class.forName(".mysql.jdbc.Driver");

Stringurl="JDBC:

mysql:

//localhost:

8080/testDB";

Stringuser="test";Stringpassword="test";

Connectioncon=DriverManager.getConnection(url,user,password);

4)连接SQLServer2000数据库

Class.forName(".microsoft.JDBC.sqlserver.SQLServerDriver");

Stringurl="JDBC:

microsoft:

sqlserver:

//localhost:

1433;DatabaseName=testDb";

Stringuser="test";Stringpassword="test";

Connectioncon=DriverManager.getConnection(url,user,password);

5)连接PostgreSQL数据库

Class.forName("org.postgresql.Driver");

Stringurl="JDBC:

postgresql:

//localhost/testDb";

Stringuser="test";Stringpassword="test";

Connectioncon=DriverManager.getConnection(url,user,password);

6)连接Access数据库

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Stringurl="JDBC:

odbc:

Driver={MicrosoftAccessDriver(*.mdb)};DBQ="+application.getRealPath("/Data/testDb/mdb");

Connectionconn=DriverManager.getConnection(url,"","");

7连接Sybase数据库

Class.forName(".sybase.JDBC.SybDriver");

Stringurl="JDBC:

sybase:

Tds:

localhost:

5007/testDb";

Propertiespro=System.getProperties();

pro.put("user","userId");

pro.put("password","user_password");

Connectioncon=DriverManager.getConnection(url,pro);

8连接informix数据库

Class.forName(".informix.JDBC.ifxDriver");

Stringurl="JDBC:

informix-sqli:

localhost:

1533/testDb:

INFORMIXSERVER=myserver"user=testUser;password=testpassword";Connectioncon=DriverManager.getConnection(url);

9)就是那个保存数组

面试题目问题

10)dataset和list的使用区别

.cnblogs./envelope/archive/2010/04/20/1716343.html

11)java框架问题

spring3.0

.open-open./lib/view/open98.html

spring

struts

hibernate

12)内存溢出为何会出现内存溢出如何处理内存溢出

13)dataset的几个实现

.cnblogs./fttbfttb/articles/1509662.html

14)标准html写界面的code

15)前台界面的一些封装类可以直接使用的有哪些

JavaScript内置对象

.ibm./developerworks/cn/web/wa-objectsinjs-v1b/

JavaScriptDOM对象

.caogen8.co/w3school/js/js_obj_htmldom.asp.htm

16)什么是线程安全什么是不安全?

.cnblogs./zwq194/archive/2012/06/26/2563567.html

17)shh架构struts关于action的使用

18)还有就是java的一些细节问题我记不住了你网上搜搜华为java面试会有好多看看就好了.

wenku.baidu./link?

url=0M6kj9LRAV76YazYQFOZhKuxTM0rPVnpfyiG3wXzNluksR4DbC-wOXqkuBO38dd4kNeC2DYwDjrcZKqK5I2pxtr1mIAoE7Np7mLI-B-BdZq

二、面试十大算法题目

1)字符串  

如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法。

2)链表

在Java中,链表的实现非常简单,每个节点Node都有一个值val和指向下个节点的链接next。

classNode{

intval;

Nodenext;

Node(intx){

val=x;

next=null;

}

}

.imooc./article/1017

将这些全部实现,并且记忆。

3)常用排序算法:

说明各个排序算法的具体实现。

blog.jobbole./11745/

关于直观展示各个排序算法的gif图片。

Verygood程序员必知的8种算法

集中排序算法的比较

.tuicool./articles/Izi6nm

1 快速排序:

基本思想:

1)先从队列中取出一个数据作为基准。

2)分区过程,将比这个数大的都放它右边,比它小的都放左边。

3)在针对左右区间,分别执行上述操作,直到左右区间都只剩下一个数。

采用的核心思路是递归的思路:

挖坑填数加分治法

(1)基本思想:

选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

(2)实例:

实现:

privatevoidquickSort(int[]array,intfrom,intto){

if(from

inttemp=array[to];

inti=from-1;

for(intj=from;j

if(array[j]<=temp){

i++;

inttempValue=array[j];

array[j]=array[i];

array[i]=tempValue;

}

}

array[to]=array[i+1];

array[i+1]=temp;

quickSort(array,from,i);

quickSort(array,i+1,to);

}

}

 

2 归并排序

介绍:

归并排序(Mergesort,台湾译作:

合并排序)是建立在归并操作上的一种有效的排序算法。

该算法是采用分治法(DivideandConquer)的一个非常典型的应用

步骤:

1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列

2.设定两个指针,最初位置分别为两个已经排序序列的起始位置

3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置

4.重复步骤3直到某一指针达到序列尾

5.将另一序列剩下的所有元素直接复制到合并序列尾

(1)基本排序:

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。

然后再把有序子序列合并为整体有序序列。

(2)实例:

实现-1

publicvoidmergeSort(int[]data,intleft,intright){

//TODOAuto-generatedmethodstub

if(left

//找出中间索引

intcenter=(left+right)/2;

//对左边数组进行递归

mergeSort(data,left,center);

//对右边数组进行递归

mergeSort(data,center+1,right);

//合并

merge(data,left,center,right);

}

}

publicvoidmerge(int[]data,intleft,intcenter,intright){

//TODOAuto-generatedmethodstub

int[]tmpArr=newint[data.length];

intmid=center+1;

//third记录中间数组的索引

intthird=left;

in

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1