WEB前端常见面试问题

1、请描述一下 cookies,sessionStorage 和 localStorage 的区别?

2、CSS优先级算法如何计算?

3、页面导入样式时,使用link和@import有什么区别?

1
2
3
4
5
1)link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;
@import是CSS提供的,只能用于加载CSS;
2)页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
3)import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;
4)link支持使用js控制DOM去改变样式,而@import不支持;

More

Windows Unicode 编码

为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。
WideCharToMultiByte 的代码页用来标记与新转换的字符串相关的代码页。
MultiByteToWideChar 的代码页用来标记与一个多字节字符串相关的代码页。

常用的代码页由CP_ACP和CP_UTF8两个。
使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。
使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。

下面是代码实现:

More

系统可用性

系统的可用性(System Usability),即系统服务不中断运行时间占实际运行时间的比例。

系统可用性取决于系统的可靠性(MTTF)及可维护性(MTTR)的高低,其中可靠性是指系统服务多久不中断,可维护性是指服务中断后多久可恢复。那这3者是怎样的关系呢?

1
2
3

System Usability = MTTF / ( MTTF + MTTR ) * 100%

More

Xcode 中的pch文件

Xcode 中的 PCH 文件是一个预编译头文件,它是一个包含了常用头文件和宏定义的文件。在编译过程中,编译器会将 PCH 文件预先编译,并将其包含在每个源文件的开头,从而加速编译过程。

PCH 文件通常包含以下内容:

  • 常用的系统头文件,例如 <Foundation/Foundation.h><UIKit/UIKit.h> 等。
  • 常用的第三方库头文件,例如 AFNetworkingSDWebImage 等。
  • 项目中常用的自定义头文件,例如常量定义、宏定义等。

More

OTA

OTA(Over-the-Air Technology)空中下载技术。是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。

OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。

More

Mac上鼠标双击无效

Mac mini接上usb鼠标后,总是不能像windows下面一样,双击打开文件,每次都要选择右键,然后选择打开,才能完成操作;同样,在xcode下面同样双击也不能选中代码段,非常的不方便,百思不得其解,经过几番捣腾,才返现是把鼠标连接速度调的太快了,不是没有双击的效果,而是点击不够快,解决办法如下:

打开设置,选择鼠标,把连接速度调慢就可以啦。

More

String类为什么是final的

在Java中,String类是一个特殊的类,它用于表示字符串对象。String类是final的,这意味着它的值在创建后不能被修改。这是由于字符串在Java中是不可变的,即一旦创建就无法更改。这样设计的原因主要有以下几点:

  • 安全性:由于字符串是不可变的,所以在多线程环境下使用字符串时不必担心同步问题。另外,字符串常量池的存在也保证了字符串对象的唯一性,从而避免了可能的安全问题。
  • 效率:由于字符串是不可变的,所以它们可以被缓存起来,以避免重复创建相同的字符串对象。这种缓存机制可以提高程序的效率,同时也减少了垃圾回收的负担。
  • 设计简单:由于字符串是不可变的,所以在设计String类时可以避免许多复杂的问题,例如如何处理在不同的线程中修改同一个字符串对象等问题。这使得String类的设计更加简单和易于理解。

因此,String类是final的,这是出于设计考虑和实现效率的需要。对于需要可变字符串的情况,可以使用StringBuffer或StringBuilder类来代替。这两个类都是可变的,并提供了许多修改字符串的方法。

More

JVM运行机制

JVM(Java Virtual Machine)是JAVA虚拟机的缩写,是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性,而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码,而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。那么,JVM的运行机制到底是怎么样的呢?

More

Java多线程面试及回答

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。

1) 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。

More