在上一次失败的经历之后,本菜鸟非常努力的梳理羽毛(整理知识点),在两天后参加了堆糖的视频面试。这次面试经历总体来说比较好,可能是查漏补缺起到了效果,大部分的题目都能大体回答出来,加上面试官很nice~~~
Anyway,还是把面试过程整理出来。


首先还是从CSS开始,有遇到与上次面试类似题目的请参考今日头条前端实习生面试

CSS题目

1.如何实现一个三栏布局

三栏布局,问到的时候我以为是左右固定,中间自适应,后来发现他就是想考我float。

*{margin: 0;padding: 0;
}
.left,.right,.middle{float:left;border: solid 1px #777;width: 30%;margin:1.55%;
}

然后面试官问我,这三个元素float了之后,对下面的元素有影响要怎么处理。

清除浮动问题我发现是前端面试CSS方面经常问的一个问题,详细可参考文章:那些年我们一起清除过的浮动。

主要的方法有添加多余标签,然后clear: both一下

<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
<div class="clear"></div>

然后CSS改一下

.clear{clear: both;
}

第二个方法是在父层容器添加overflow:auto属性

<div class="overflow"><div class="left"></div><div class="middle"></div><div class="right"></div>
</div>
.overflow{overflow: auto;
}

第三个方法是用伪类::after

<div class="clearfix"><div class="left"></div><div class="middle"></div><div class="right"></div>
</div>

由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

.clearfix::after{display: block;content: "";visibility: hidden;clear: both;
}
.clearfix{*zoom:1;
}

2.position的几种属性

我发现这个面试官的问题都不算刁钻,position也是在学布局的时候一定要接触到的。常用的position有static、fixed、absolute和relative。

position:static
这个static是默认的,对块级框的块格式化,对行级框的行格式化,元素按照块格式化上下文或行格式化上下文正常排版。

position:relative
相对定位,元素正常排版,并可以用top left right bottom进行位置的偏移,然而后面的元素不会调整位置去适应这个相对定位的元素。

position:absolute
绝对定位,元素脱离正常排版,使用top left right bottom相对于第一个非static的父层定位。

position:fixed
与absolute类似,不过使用top left right bottom定位是在视口的固定位置上。


3.如何实现一个响应式布局

这个是一个经验题。我原以为他要问我对Bootstrap等类库的使用,加之我从没接触过移动端,对于除了使用过Bootstrap和使用百分比宽度没再尝试过别的。

面试官说明是要自己写响应式,然后我就说我就是用百分比设置宽度。然后他问半分比相对于谁?

所以说还是基础硬伤,因为自己做的时候没注意过相对于谁,而且大多是外框,所以就说相对于窗口。面试官一笑,窗口?我说好吧,我再查查。。。顺便查了一下盒模型设置的各个百分比都是相对于谁的。

CSS中:width、margin和padding百分比是相对于包含块的!
一般情况下包含块是父元素,当position: fixed的时候,包含块为视口;当position: absolute的时候,包含块为最近的position不是static的祖先。

除此之外,响应式布局的方法还有:
CSS3 Media Query

通过在<head>里面插入这段内容,使分辨率在小于1024分辨率的情况下和大于1024分辨率的情况下能响应不同的css文件。

<meta name="viewport" content="width=device-width; initial-scale=1.0">

设置原始缩放比例和视窗的大小

<link rel="stylesheet" type="text/css" href="common.css" media="all" />
<link rel="stylesheet" type="text/css" href="normalScreen.css" media="screen and (max-width: 1024px)" />
<link rel="stylesheet" type="text/css" href="widthScreen.css" media="screen and (min-width: 1024px)" />

同样,可以在样式表中镶嵌@media,文章推荐参考响应式布局这件小事


Javascript题目

1.Jquery中$('').click()和$('').on('click')的分别

我为了学基础,学原生的Javascript,已经很久没碰Jquery了。问到这个问题的时候,我只能很诚实的说我没有考虑过这个问题,如果让我说的话,可能是原生的JS中onclick事件与addEventListener("click")的区别。

在面试完之后,我立刻又上网查了这两个的分别,其实在效果上作用不大,就是说下列代码在实现上并没有很大差距。

$("#myDiv").click(function(){alert("clicked");
})
$("#myDiv").on("click",function(){alert("clicked");
})

不同的是,on()方法可以实现动态绑定。可以将所有的点击事件绑在一个父层元素上,也可以用off()方法解绑定。

$("body").on("click","button",function(){var btnValue = this.val();alert(btnValue+"clicked");
});
//为每一个按钮绑定点击事件
$("#myDiv").off("click");//解除点击事件绑定

2.JS实现一个类

我发现,这个问题也是面试常会问到的,而且我觉得这也是我在学习JS的时候遇到的一个难点。
说起类,就要提起原型链的问题,这里直接上例子。对于原型,可以直接参考我大神男友的博文Javascript 面向对象特性(1)——抛弃类、Javascript 面向对象特性(2)——找回类。

《Javascript高级程序设计》中讲到继承的时候提到了六种方式:原型链、借用构造函数、组合继承、原型式继承、寄生式继承、寄生组合式集成。

原型链方式的具体用法是创建一个构造函数,然后创建继承这个构造函数的引用类型,将这个引用的原型指向构造函数。在原型链的问题是,Student的原型为Person的实例,那么所有Student的实例会共享它引用类型的属性,所以实例在修改这个属性的时候会导致其他实例的实例都被修改。

function Person(name,age){this.name=name;this.age=age;this.sayName=function(){alert(this.name);}
}
function Student(school){this.school=school;
}
Student.prototype= new Person();

借用构造函数的用法是在一个引用类型中调用构造函数,使用apply()和call()方法可以在函数内部调用构造函数。问题是,对于Student的实例找不到哪些是Person中定义的。

function Person(name,age){this.name=name;this.age=age;
}
Person.prototype.sayName=function(){alert(this.name);
}
function Student(name,age,school){Person.call(this,name,age);this.school=school;
}

组合方式是综合了原型链与借用构造函数两种方式。

function Person(name,age){this.name=name;this.age=age;
}
Person.prototype.sayName=function(){alert(this.name);
}
function Student(name,age,school){Person.call(this,name,age);this.school=school;
}
Student.prototype= new Person();
Student.prototype.constructor=Student;Student.prototype.saySchool=function(){alert(this.school);
}
var instance1=new Student("Kathy","23","UQ");
var instance2=new Student("Visper","24","KMUST");instance1.saySchool();//UQ
instance2.sayName();//Visper

原型式继承,方法是通过一个现有的对象创建一个新的对象。

//引自《Javascript高级程序设计》
function object(o){function F(){}F.prototype = o;return new F();
}
var person = {name: "Kathy",age: "23"
};
var anotherPerson = Object.create(person);
anotherPerson.name = "Visper";
anotherPerson.age = "24";

寄生式继承的方法是将原型式继承封装在一个方法内,然后再用工厂式的创建对象的方法。

//引自《Javascript高级程序设计》
function object(o){function F(){}F.prototype = o;return new F();
}
var person = {name: "Kathy",age: "23"
};
function createPerson(original){var clone=object(original); clone.sayName=function(){alert(this.name);};return clone;
}
var anotherPerson = createAnother(person);
anotherPerson.name = "Visper";
anotherPerson.age = "24";

2.如何统计一个字符串中哪个字母出现的次数最多

这个问题又是算法题,而算法题是我相当不擅长的。。。不过有上次选取“字符串中第一个只出现一次的字符”的经验,这次也是比较快的想出了一个方法。不过,也还是不知道这个问题的最快解决办法是什么。

思路还是将字符串变成数组,然后再sort()排序,之后为每一组字符计算数字,将目前出现次数最多的字符以及其次数记下来。

function maxCountValue(string){var letterArray=Array.prototype.slice.apply(string);var sortArray=letterArray.sort();var arrayLen=letterArray.length;var countNow=0,count=0,value=sortArray[0],maxCountValue="";for(var i=0;i<arrayLen;i++){//判断是否进入下个字符组if(value==sortArray[i]){countNow=countNow+1;//判断是否为最后一组并且判断当前次数以及目前最大次数if(i==arrayLen-1&count<countNow){maxCountValue=value;}}else{//如果当前次数大于目前最大次数if(count<countNow){count=countNow;maxCountValue=value;}value=sortArray[i];countNow=0countNow=countNow+1;}}alert(maxCountValue);
}

HTTP题目以及新技术题目

HTTP题目继续问到了AJAX的问题,上一篇面试题中有整理。

面试官紧接着有问到form提交和ajax提交的区别?
Form在提交的时候,会跳转页面或者原页面刷新。而AJAX是异步的,无需页面刷新而只是部分刷新。
Form提交时,JS不是必需的,而且数据按照表单结构提交。AJAX需要JS来实现,而且数据也要用程序处理。


之后面试官问到开发环境问题:

1、目前的开发环境是什么
曾用PC开发,使用EverEdit;这几个月转用Mac,使用HBuilder

2、shell操作 命令行用过什么
简单的前进到文件目录cd
列出当前文件夹内的文件 ls -li
改变所有人权限 chown
该文件读写模式 chmod

3、chrome的调试方法
Elements中查询元素结构、以及元素的样式
Network中查看每个资源的请求反馈时间
Sources中调试程序,在左栏程序文件上打断点,并在右侧输入变量名查看变量值的变化
Resource中查询Session、Cookie、本地存储及缓存的状态
Console中执行函数并查看错误行号或错误代码

4、代码管理工具使用过么?做哪些操作呢?
使用过Git:建立远程仓库,拉取本地仓库,更改之后submit,之后push到远程仓库。曾经Fork过别人的,然后修改过后也是submit再push。
说实话我做的个人项目比较多,对于GitHub的使用仅限于提交推送更新代码。所以也是大概的说了一下我的使用情况。


新技术题目

接触过什么比较前沿的技术?js框架、模块化 、自动化工具、预编译语言?
呃。。呃。。呃。。。

当时我的反应好尴尬,不过也是实话实说我没接触过什么,只不过听说过angular.js、backbone.js之类的。其余的都没太听说过。。。汗

不过我有表示我以后会努力学习,迎头赶上!


最后问道面试官对我的印象:1、经验不足,2、新技术接触的太少。

因为我目前时间有限,只有每天晚上整理面试题,所以这短短的几个题整理了接近一个星期,很多问题也期待大神们的补充。。。目前也算是找到了工作,今后会继续努力,让我的羽翼丰满起来!

【面试次体验】堆糖前端开发实习生相关推荐

  1. 【今日头条】【抖音火山】前端开发实习生

    今日头条成立于2012年,致力于成为最懂你的信息平台,连接人与信息,促进内容的创作和交流.通过技术,来改变整个内容生产.消费领域. 5年的时间内,我们已经成为了一个估值过百亿美元,用户数亿,DAU过亿 ...

  2. 前端开发实习生-实习日志

    文章目录 前言 一.工作内容和要求 二.工作情况记录 三.个人体会或收获 总结 前言 前端开发实习生的日常工作实习日志 一.工作内容和要求 初进公司,熟悉环境,了解大概流程,参加了公司的新员工培训大会 ...

  3. 2019上半年前端面经总结(前端开发实习生)

    2020.10.15更新:最近发现 看准网 上最重要的公司点评功能已经关闭了(包括公司评分和员工总评),说明看准网最重要的点评功能已被各方资本联合绞杀(可能是资本方联合做出了一波交易..),现在不知道 ...

  4. 前端开发实习生面试总结

    个人感觉面试官对实习生还是很友好的,大部分时候你答不上来都会引导你,最后还会点评你的不足,评价出来的那些问题确实是我自己的短板!所以在整个过程中还是学到了很多!! 本人坐标南京,南京投的相对较多,不过 ...

  5. 前端开发实习生的第一天

    我今年大三,6月初找到了一份前端开发的实习工作,公司是北京某家A轮公司.约定好今天入职,我比规定报到时间的早到了半小时,到公司后被安排在人力资源部等我的入职联系人,大概20分钟之后到了指定办入职手续的 ...

  6. 前端面试面向对象_面向初级前端开发人员的面试问题

    前端面试面向对象 The purpose of this article is to familiarize fresh Front-End Web Developers with text book ...

  7. 阅文集团前端开发实习生-电话面

    0前言 苦于没有太多实战经历,所以想找个实习历练历练,昨天投了阅文集团的前端开发实习岗位,今天晚上就收到了电话,脑子里一片空白,但是面试官真的很温柔,刚开始紧张的结巴,因为真的没有准备,自我介绍和项目 ...

  8. [21届]web前端开发实习生岗位面试准备----HTML

    一.html语义化 用正确的标签做正确的事情 html语义化让页面的内容结构化,结构更清晰.便于对浏览器.搜索引擎的解析 即使在没有样式(CCS)的情况下也以一种容易阅读的文档格式显示 搜索引擎的爬虫 ...

  9. 道客web前端开发实习生,电话面试问题

    上海的一家公司,很不错,HR态度非常好,电话面试我的是一个女生,声音很甜,交流的过程很开心,但是回答的不是很理想,所以,等通知咯 1.如何实现块级元素水平垂直居中(不知宽高)? 方法比较多,不一一列举 ...

最新文章

  1. OpenCV学习之Mat::at()理解
  2. jQuery的var that=this
  3. mysql eager mode_MySQL Connector Net 6.6.5 Entity Framework 显式预加载 Eager Load Bug
  4. 第三次学JAVA再学不好就吃翔(part1)--初识JAVA
  5. 20145209预备作业01
  6. 问题四十九:怎么用ray tracing画supertoroid(超级圆环)
  7. 二元一次方程有唯一解的条件_若一个二元一次方程的一个解为
  8. 近五年计算机考研国家线、自划线汇总!
  9. SpringBoot专栏:集成定时ScheduledTasks任务,刷新概念了_14讲
  10. 估计很多人不知道:在PowerPoint中插入图片的三种方式用法和解析
  11. amd锐龙CPU A320系列主板如何安装win7
  12. Android 移动开发——第十三章——个人理财通(Android Studio 版)
  13. 手风琴控件android,手风琴控件 | Accordion Control
  14. 国家税务总局河南省电子税务局中,交契税时,报房屋属地税务机关必填的解决方法
  15. Buffer.from()
  16. mezzanine安装(python2.7+nginx+mysql+supervisor)
  17. Java基础 第二天
  18. ssm+mysql+安卓app大学生社团信息管理系统-计算机毕业设计源码99953
  19. karas报错filename = 'fine_tuned_net.h5', file descriptor = 24, errno = 28, error message = 'No space l
  20. 自启动U盘,他乡有知音

热门文章

  1. 【CSDN】01-文章编辑方式
  2. php最大公约数辗转相除程序,[转]辗转相除求最大公约数
  3. WebApp简单制作
  4. 算法设计与分析——算法学基础(三):渐进记号
  5. Layui 数据表格合计
  6. 谷歌浏览器,无需安装
  7. 计算机cpu损坏,电脑cpu怎么样会坏掉啊
  8. 计算机网络与应用初稿,计算机网络原理与应用(第2版)
  9. 基于C++控制台(Windows平台)的一个植物大战僵尸小游戏
  10. oracle数据库事务日志已满,SQL Server中已满事务日志原因的检测(上)