程序员经典面试题目
通常我们在面试计算机程序员时,会遇到各种各样的问题。现在我们把程序员面试所要遇到的问题做了一个总结与归纳。下面小编给大家带来程序员经典面试题目有哪些,希望能帮助到大家!
2021年前端面试题目
1.1、前端 MV框架的意义
早期前端都是比较简单,基本以页面为工作单元,内容以浏览型为主,也偶尔有简单的表单操作,基本不太需要框架。
随着 AJAX 的出现,Web2.0的兴起,人们可以在页面上可以做比较复杂的事情了,然后前端框架才真正出现了。
如果是页面型产品,多数确实不太需要它,因为页面中的 JavaScript代码,处理交互的绝对远远超过处理模型的,但是如果是应用软件类产品,这就太需要了。
长期做某个行业软件的公司,一般都会沉淀下来一些业务组件,主要体现在数据模型、业务规则和业务流程,这些组件基本都存在于后端,在前端很少有相应的组织。
从协作关系上讲,很多前端开发团队每个成员的职责不是很清晰,有了前端的 MV框架,这个状况会大有改观。
之所以感受不到 MV框架的重要性,是因为Model部分代码较少,View的相对多一些。如果主要在操作View和Controller,那当然 jQuery 这类库比较好用了。
参考《前端 MV框架的意义》
1.2、请简述盒模型
IE6盒子模型与W3C盒子模型。
文档中的每个元素被描绘为矩形盒子。盒子有四个边界:外边距边界margin, 边框边界bder, 内边距边界padding与内容边界content。
CSS3中有个box-sizing属性可以控制盒子的计算方式,
content-box:padding和bder不被包含在定义的width和height之内。对象的实际宽度等于设置的width值和bder、padding之和。(W3C盒子模型)
bder-box:padding和bder被包含在定义的width和height之内。对象的实际宽度就等于设置的width值。(IE6盒子模型)
参考《盒模型》
1.3、请你谈谈Cookie的弊端
a. 每个特定的域名下最多生成的cookie个数有限制
b. IE和Opera 会清理近期最少使用的cookie,Firefox会随机清理cookie
c. cookie的最大大约为4096字节,为了兼容性,一般不能超过4095字节
d. 安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。
1.4、浏览器本地存储
在HTML5中提供了sessionStage和localStage。
sessionStage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁,是会话级别的存储。
localStage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
1.5、web stage和cookie的区别
a. Cookie的大小是受限的
b. 每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽
c. cookie还需要指定作用域,不可以跨域调用
d. Web Stage拥有setItem,getItem等方法,cookie需要前端开发者自己封装setCookie,getCookie
e. Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Stage仅仅是为了在本地“存储”数据而生
f. IE7、IE6中的UserData通过简单的代码封装可以统一到所有的浏览器都支持web stage
1.6、对BFC规范的理解
BFC全称是Block Fmatting Context,即块格式化上下文。它是CSS2.1规范定义的,关于CSS渲染定位的一个概念。
BFC是页面CSS 视觉渲染的一部分,用于决定块盒子的布局及浮动相互影响范围的一个区域。
BFC的一个最重要的效果是,让处于BFC内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。
利用BFC可以闭合浮动,防止与浮动元素重叠。
参考《Learning BFC》
1.7、线程与进程的区别
a. 一个程序至少有一个进程,一个进程至少有一个线程
b. 线程的划分尺度小于进程,使得多线程程序的并发性高
c. 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率
d. 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
e. 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配
1.8、你都使用哪些工具来测试代码的性能?
JSPerf, Dromaeo
1.9、你遇到过比较难的技术问题是?你是如何解决的?
1.10、常使用的库有哪些?常用的前端开发工具?开发过什么应用或组件?
关于性能测试的面试题目
1、如何识别系统瓶颈?
从TPS指标分析,TPS即系统单位时间内处理事务的数量。当前随着用户数的增长期系统每秒可处理的事务数是否也会增长。
2、如何发现数据库的相关问题?
①通过运行某些相应的已获取的SQL语句,判断是否由于数据库索引所导致的事务响应过长的问题发生。
②通过实时监控工具(nmon等)监控分析:Ⅰ.系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;Ⅱ.在系统运行过程中其内存是否存在内存泄漏现象;
3、think_time的作用是什么?
①降低当前运行时压力,环节对应用服务器所造成的压力;
②模拟真实生产用户操作,考察对服务器所造成的影响。
4、进行参数化的目的是什么?
①减少脚本的大小;
②便于脚本的维护,从而更加真实的模拟生产环境的数据。
5、容量测试方法中为什么要以逐步递增的方式进行?
虚拟用户数随着负载时间的延长而增加,可以帮助确定系统响应时间减慢的准确时间以及准确的用户数。
6、假设在测试过程中某些事务的响应时间过长,但分析应用服务、数据库以及网络都属于正常现象,问题可能出现的原因有哪些?
①LoadRunner客户机器是否已无法承载当前运行压力导致LoadRunner无法及时获取从服务端返回的信息;
②Tink_time是否已忽略;
③确定当前被测系统架构,是否为在每次测试过程中清楚缓存所导致。
7、如何发现应用服务器的相关问题?
①通过某些事务的运行,判断是否在应用代码层未进行调优导致事务响应事件过长;
②通过实时监控工具(nmon等)监控分析:Ⅰ.系统在运行过程中其CPU是否稳定运行或CPU耗用是否过高;Ⅱ.在系统运行过程中其内存是否存在内存泄漏现象;Ⅲ.打开相应日志、分析在运行过程中是否存在交易报错并获取错误原因查看是否由于代码原因导致交易错误发生。
8、简述性能测试流程?
①分析性能需求:挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标:比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下;
②制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具;
③编写测试用例;
④搭建测试环境,准备好测试数据;
⑤编写性能测试脚本;
⑥性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本;
⑦设计测试场景,运行测试脚本,监控服务器;
⑧分析测试结果,收集相关的日志提单给开发;
⑨回归性能测试;
⑩编写测试报告。
9、如何确定系统最大负载?
通过负载测试,不断增加用户数,随着用户数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数。
10、性能测试指标有哪些?
①响应时间;
②吞吐量;
③Cpu;
④内存;
⑤Io;
⑥Disk。
Shell 脚本面试题目
一、Shell脚本是什么、它是必需的吗?
一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。
二、什么是默认登录shell,如何改变指定用户的登录shell?
在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。
三、可以在shell脚本中使用哪些类型的变量?
在shell脚本,我们可以使用两种类型的变量:①系统定义变量;②用户定义变量。
系统变量:是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。
用户变量:是由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。
四、如何将标准输出和错误输出同时重定向到同一位置?
这里有两个方法来实现:
方法一:2>&1 (如# ls /usr/share/doc > out.txt 2>&1 )
方法二:&> (如# ls /usr/share/doc &> out.txt )
五、shell脚本中“$?”标记的用途是什么?
在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。
六、如何在后台运行脚本?
在脚本后面添加 “&”。
七、"chmod 500 script" 做什么?
使脚本所有者拥有可执行权限。
八、">" 做什么?
重定向输出流到文件或另一个流。
九、& 和 && 有什么区别
& - 希望脚本在后台运行的时候使用它;
&& - 当前一个脚本成功完成才执行后面的命令/脚本的时候使用它。
十、什么时候要在 [ condition ] 之前使用 “if”?
当条件满足时需要运行多条命令的时候。
程序员经典面试题目相关文章:
★ 程序员面试逻辑题