亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

【答阿里寒冬面試題】呵呵,大神的面試題就是好!

2024-04-27 14:33:30
字體:
來源:轉載
供稿:網友
【答阿里寒冬面試題】呵呵,大神的面試題就是好!

前言

今天微博看到了寒冬大神的面試題,覺得挺有意思的,這里就做一點解答

http://weibo.com/1196343093/Bhj510t50

談談你對CSS布局的理解

講講輸入完網址按下回車,到看到網頁這個過程中發生了什么。

談談你對Web前端組件化的理解,Web Component會帶來怎樣的影響

談談你對前端資源下載性能優化的經驗和思考

現在有很多的MV*框架,你對它們有什么看法

iOS體驗好在哪里,Web能趕上么?

網頁游戲怎么做?

Hybrid技術應當如何應用?

你最愛的前端框架是什么,為什么?

首先老師的題目都很大,不好答,我這里技術有缺陷,答得不好大家不要噴我,可以好好教育我嘛

淺談CSS布局

概述

從網頁表現來看,HTML是實體本身,要實現各種優雅的布局的需要依賴CSSHTML元素兩大類型為塊級元素與行內元素,網頁的布局一般由塊級元素組織,元素不同便有不一樣的表現要實現布局就要用到與布局有關的CSS屬性為position,常用屬性為static、absoulute、fixed、relativeposition的作用是改變元素的狀態,由文檔流轉為相對文檔流或者脫離文檔流元素(定位元素)當然float也能引發塊級元素脫離文檔流,但是其表現與原理與上面不一致,而且要慎用float布局于是這里便已經有三種“流”了,不同的布局元素會處于不同的“執行環境”,在“執行環境”中才能方便的對其進行管理這個管理的依據便是BFC(塊級作用域上下文),根據我粗淺的理解是,BFC也就是瀏覽器提供的一塊渲染區文檔流的元素處于一個渲染區,而定位元素處于另一層渲染區,float元素又會與之不同各個渲染區中的元素具有其定位規則,最簡單的便是文檔流中的元素,遵循其塊級元素獨占一行+盒模型的規則:① 塊級元素獨占一行,并且具有框(經典盒模型)② 塊級元素間由margin屬性分割,并且垂直方向的margin會取其大者③ 塊級元素必定左靠這父級塊級元素左邊框(包含塊,布局上下文)④ float元素不能影響塊級元素的BFC區域,但是其高度會參與計算創建BFC的方式有:① float② overflow③ display(使行內元素具有BFC)④ position基于此,我們便可以實現我們的布局了,這里以最簡單的兩列布局為例(左邊導航,右邊內容主體)由于先出現的DOM先展示,所以內容優先原則,我們會將主體dom先展示
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>  <title></title>  <style>    * { margin: 0; padding: 0; }    div { border: 1px solid black; }    #sidebar { position: absolute; left: 0; top: 0; width: 95px; }    #content { margin-left: 100px; }  </style>  <script src="../jquery-1.7.1.js" type="text/javascript"></script></head><body>  <div id="content">    主體  </div>  <div id="sidebar">    導航  </div></body></html>
這里從理論上說,便是觸發了siderbar元素的定位特性,其BFC與文檔流不相關了當然,這里siderbar可以使用float實現,但是float本身應該用于處理文字與圖片包裹的需求,我們本著職責分離的想法就別那樣干了而且使用float還會引起元素坍塌,這里還要費勁去處理清除浮動

行內元素

行內元素的處理比較復雜,首先行內元素的高度由其line-height決定,所以不要妄想其設置一個行內元素的高度,這會引起意想不到的問題舉一個例子來說,很多大型網站都會具有統計代碼,而此類統計代碼一般是以img做請求發出,這個時候可能會導致10px左右的白屏問題這個就是妄想設置行內元素高度的結果,獨立的inline元素出現時,會為其創建一個line boxes作為容器(文字框)一行文字一個line Boxes,一行高度由其中最高的行內元素確定,上例中有一個height為0的img,卻為其生成了一個高度為10的行高下面的代碼中,div會被行內元素撐開,其高度會由span中line-height高者決定
<div>  <span id="span1">主體 </span><span id="span2">導航 </span></div>

移動端的建議

① 移動端的文檔流渲染效率最高,應該避免大范圍使用定位元素,在小米,三星等低端下定位元素可能渲染不出來(解決方案是引起回流)② img元素加載失敗時候會有邊框,需要搞掉③ 慎用fixed屬性,fixed對于移動端來說有點頭疼,首先會有文本聚焦fixed定位錯亂問題,其次在ios4的屏幕中,如果加上瀏覽器上下工具條,再用fixed可視區域會變得很?、?ios是按塊渲染的,布局時候可以分塊,不會渲染可視區域外的內容⑤ 動畫或者border-radius、box-shadow等屬性皆會使手機耗電加?。ǖ沁@個好像與我們沒關系)⑥ fixed元素為其設置html可能不響應或者說渲染看不見,常見于ipod或者低端android⑦ 當然能在布局上用上一些語義化標簽自然是好事,這樣對SEO或者特殊人事有一定幫助,比如strong、article之類的

總結

因為我本身專注點在js對css了解較少只能做此解析,請盡量拍磚指正

一次請求的完整流程我們一次網址輸入會發起一連串連鎖效應,但是因為我這邊對HTTP一塊不是十分熟悉,只能解釋自己了解的一次URl輸入后,其流程如下,首先是請求響應的流程:1 解析URL,解析域名生成唯一IP地址,開始搜索服務器2 找到服務器后,服務器接收請求被服務器進程攔截;一般而言,.net的程序會被IIS處理,java會被jBoss或者tomcat處理3 服務器處理請求,如果靜態文件的話直接返回,若是.net或者java等動態腳本會經過服務器編譯,執行其中的服務器端代碼4 若是服務器端具有數據庫操作的話,這里還需要與DB建立連接,操作數據庫5 服務器處理結束后,生成最終的靜態HTML字符串返回,開始向請求者(客戶端)返回請求字符串,一次返回量過大就會分批次,這是一個優化點6 服務器響應到達瀏覽器,瀏覽器開始處理請求,進入瀏覽器解析流程

請求返回后,便進入了我們關注的前端模塊

簡單來說,瀏覽器會解析HTML生成DOM Tree,其次會根據CSS生成CSS Rule Tree,而Javascript又可以根據DOM API操作DOM上面的文字描述的很簡單,事實上發生的事情,卻很復雜,這里與代碼實現也很有關聯,但是有幾個關鍵點:頁面一定會等所有的HTML結構與CSS加載下來才渲染(webkit內核)比如我們這里使用fiddler限制其外鏈加載,我們為其限速為10s
<html xmlns="http://www.w3.org/1999/xhtml"><head>  <title></title>  <style>    div { border: 1px solid black; }    a { color: Red; }  </style></head><body>  <div>    <a id="span1" >主體 </a><span id="span2">導航 </span>  </div>  <link href=" http://kb.cnblogs.com/style/common.css" rel="stylesheet" /></body></html>

我們看到事實上62ms后頁面整體dom結構就加載好了,這個時候我們是可以使用js操作dom結構的,但這里一個重點是:CSS外鏈加載會阻塞js的執行,并且重置CSS會引起瀏覽器的回流或者重繪,也就是:css外鏈會阻塞整個頁面的渲染(顯示),但是其DOM結構是可操作的,中間如果有阻塞性的操作,比如alert的話會強制瀏覽器繪制頁面上面的特性與css外鏈的順序無關,并且有幾個樣式相關的操作,便會執行幾次,最終采用最近或者優先級最高的樣式
<html xmlns="http://www.w3.org/1999/xhtml"><head>  <title></title>  <style>    div { border: 1px solid black; }    a { color: Red; }  </style></head><body>  <div>    <a id="span1" >主體 </a><span id="span2">導航 </span>  </div>  <script>    document.getElementById('span2').innerHTML = '測試';    alert(1)   </script>  <script>    alert(2)   </script>  <link href=" http://kb.cnblogs.com/style/common.css" rel="stylesheet" /></body></html>

一個需要注意的地方是,ChromeFirefox或者IE表現不一致,firefox與IE都是先渲染頁面最后等段CSS下來后再次渲染所以我們很多同學面試時說將css外鏈放到header中,而不是body中的理解都是一知半解,這里真實的處理辦法是異步插入css外鏈才行至少對于chrome需要做這個處理,否則頁面就是出不來,因為多數手機是webkit內核,保不齊這里出多少事情根據以上流程后,頁面也基本出來了,這里簡述其流程① 生成DOM樹② 計算CSS樣式③ 構建render Tree④ reflow,定位元素位置與大?、?繪制頁面上面過程如果js操作dom或者終結有一段style都會引起reflow,由于img會在文檔加載結束后加載,可能會撐開頁面,導致回流,所以一般需要對img設置尺寸對于這塊的優化各位自己來吧,我這里便只能理解到這個程度了PS:事實上chrome獲得請求時本身也有幾個事件點,這里可以用其開發性能插件,但對前端基本透明,我們這里不關注了

MVC與組件化這里我將2塊題目合到一起了,我覺得這里可以連到一起做說明

View分離

很多程序的變革集中積累在VIEW一塊的處理,原因是這里的需求是最復雜的,就View分離來說,最成功的我覺得是aspasp.net的變革最初的ASP程序,會將C#代碼寫在asp代碼中,這樣的結果便是頁面里面既有html又有C#代碼,甚至一個js循環中會嵌套出C#的循環PS:你一定要相信,那個時候不會有js分成的概念,因為需求達不到所謂的View分離便是,程序員確實受不了維護顯示與邏輯同時處于一個頁面的程序了,于是他選擇了改變,改變的結果便是拆分View分離一大核心思維便是,分得開,合得攏,他們這里引入一個codebehind方案將一個頁面文件分成兩個(事實上是三個)

① index.apsx

② index.aspx.cs

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="_00綜合_11mvc_index" %>
public partial class _00綜合_10doc_write_index : System.Web.UI.Page{    PRotected void Page_Load(object sender, EventArgs e)    {    }}

最終這兩個文件會和到一起,兩個文件之間也可通信,而通信的橋梁是.net一個個被人詬病的組件,比如:

① button組件

② datalist

③ label組件

④ 偉大的gridview

各個組件在C#層面上會擁有一個ID進行約束,.cs文件便可以根據該ID為其注冊各個事件,這個與javascript的模型便非常類似了

View分離的第一個優點便是,用戶的界面變得干凈了,不會有代碼混雜的現象,第二個優點便是業務端的代碼可以再分離,從而多了數據層、業務層等各個概念

而組件的出現讓.net變成了世界上開發最快的語言,這點誰也不可否認,而這些都是前端MVC出現或者組件出現的意義

前端View分離

與asp當初的情況一致,js進行dom操作或者字符串拼接的目的事實上就是想形成一個可供展示的View,前端jser已經再也不能忍受這種代碼了:

很多時候,我們想將對應的模板單獨的放到一個地方,每次樣式若是有更改,只需要更改那個文件即可,只要與之呼應的“ID”不丟失即可,比如這樣的結構和代碼:

View Code
<div class="cui-pop-box">  <div class="cui-hd">      <%=title%>  </div>  <div class="cui-bd">    <div class="cui-error-tips">      <%=content%></div>    <div class="cui-roller-btns">      <% for(var i = 0, len = btns.length; i < len; i++ ) {%>      <div class="cui-flexbd <%=btns[i].className%>">        <%=btns[i].name%></div>      <% } %>    </div>  </div></div>

這樣做的道理是,這個樣子做到了表現與行為分離,我們分得開,然后回根據基類的一個機制,讓他們最終合到一塊,以完成功能

這里我們依舊需要強調一個前提:“ID”關聯不可丟失,否則“行為”將不可表現,只要兩者間關聯不丟,這里便可輕松滿足以下邏輯:

① CSS名修改(非標識性CSS名)

② 標簽改變

③ 描述性文字改變

......

MVC在前端

重構一書有說,重復性或者類似重復性的代碼應該抽象為一個方法,程序員也不傻,在重復使用需要提示框需求后便會學會形成alert組件

組件的出現是代碼抽象,代碼重用的標識,這個樣子既可以減少工作量也可以減少代碼容量,而組件的實現與MVC思維的很好詮釋

比如以下代碼:

View Code

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内成人精品视频| 国产一区二区视频在线观看| 国产精品麻豆va在线播放| 欧美视频中文在线看| 欧美一区深夜视频| 日韩在线视频免费观看| 国产香蕉精品视频一区二区三区| 久久青草精品视频免费观看| 亚洲欧美日韩天堂| 国产精品pans私拍| 亚洲精品美女久久久久| 国产手机视频精品| 亚洲天堂av在线免费| 色综合男人天堂| 欧美视频在线观看 亚洲欧| 国产精品久久久久一区二区| 亚洲精品wwwww| 亚洲欧美中文日韩v在线观看| 欧美精品在线观看| 亚洲国产日韩欧美综合久久| 富二代精品短视频| 欧美激情18p| 2019亚洲日韩新视频| 精品偷拍各种wc美女嘘嘘| 日韩在线视频免费观看| 成人网在线免费看| 97精品久久久| 亚洲国产中文字幕久久网| 国产精品久久国产精品99gif| 九九热这里只有在线精品视| 亚洲午夜未删减在线观看| 8x海外华人永久免费日韩内陆视频| 最新国产成人av网站网址麻豆| 国产成人精品一区二区| 国产亚洲一级高清| 欧美一区二区大胆人体摄影专业网站| 欧美在线视频在线播放完整版免费观看| 国产成人av网址| 在线精品国产欧美| 国产综合在线视频| 国产精品热视频| 成人国产精品av| 亚洲国产欧美一区| 久久全球大尺度高清视频| 亚洲第一国产精品| 欧美激情国产高清| 成人h片在线播放免费网站| 45www国产精品网站| 精品国产乱码久久久久久虫虫漫画| 久久久久久久久久久人体| 热re91久久精品国99热蜜臀| 2020欧美日韩在线视频| 国产精品久久久久999| 国产精品久久久久一区二区| 国产午夜精品久久久| 福利视频一区二区| 国语自产精品视频在线看抢先版图片| 亚洲美女中文字幕| 蜜月aⅴ免费一区二区三区| 亚洲国产天堂久久综合| 日韩欧美精品在线观看| 992tv在线成人免费观看| 欧美二区在线播放| 日韩中文有码在线视频| 亚洲综合精品伊人久久| 欧美xxxx综合视频| 欧美国产日本高清在线| 欧美日韩亚洲一区二区| 中文字幕av一区二区三区谷原希美| 97在线视频观看| 久久久国产精品视频| 欧美大片第1页| 国产精品网红福利| 欧美激情一区二区三区在线视频观看| 97国产精品视频| 亚洲国产91精品在线观看| 日本久久久久久久久久久| 91av免费观看91av精品在线| 裸体女人亚洲精品一区| 国内精品久久久久久中文字幕| 欧美精品在线播放| 亚洲精品大尺度| 国产主播在线一区| 精品福利一区二区| 欧美日韩国产色视频| 久久国产精品电影| 日本欧美在线视频| 久久久噜噜噜久久久| 精品亚洲国产成av人片传媒| 国产精品综合网站| 欧美在线激情网| 久久精品视频va| 91免费的视频在线播放| 久久久久久国产免费| 91嫩草在线视频| 欧美一区二区视频97| 日韩免费中文字幕| 欧美xxxx18性欧美| 97在线日本国产| 国内精品美女av在线播放| 亚洲欧美激情一区| 国产精品一区二区在线| 欧美久久精品一级黑人c片| 亚洲精品久久视频| 狠狠操狠狠色综合网| 亚洲第一页中文字幕| 国产在线观看91精品一区| 日韩在线视频中文字幕| 亚洲xxxx做受欧美| 午夜精品在线观看| 亚洲午夜国产成人av电影男同| 91po在线观看91精品国产性色| 狠狠久久亚洲欧美专区| 一夜七次郎国产精品亚洲| 深夜成人在线观看| 国产中文字幕亚洲| 亚洲一区二区三区成人在线视频精品| 中文字幕久久精品| 91深夜福利视频| 中文字幕在线成人| 欧美精品亚州精品| 91干在线观看| 欧美性猛交xxxx乱大交极品| 尤物yw午夜国产精品视频| 亚洲国产97在线精品一区| 一个人看的www久久| 亚洲午夜小视频| 日韩精品电影网| 日韩av最新在线观看| 欧美精品videossex性护士| 久久影视免费观看| 中文字幕日韩高清| 国产精品一区二区3区| 日韩精品极品在线观看播放免费视频| 欧美做受高潮电影o| 亚洲男人第一av网站| 国产亚洲美女久久| 日韩av在线免播放器| 日韩女在线观看| 亚洲欧美中文在线视频| 亚洲欧美精品中文字幕在线| 日韩电影在线观看免费| 97久久国产精品| 青青草99啪国产免费| 久久久久久久电影一区| 欧美日韩国产精品一区二区三区四区| 国产91网红主播在线观看| 午夜精品www| 欧美在线视频在线播放完整版免费观看| 亚洲精品福利在线观看| 国产精品网红直播| 日韩av男人的天堂| 久久久久成人网| 人妖精品videosex性欧美| 黄色成人在线播放| 亚洲图片欧美日产| 7777免费精品视频| 日韩在线中文视频| 国产精品高潮呻吟久久av无限| 欧美大尺度在线观看| 午夜精品免费视频| 精品欧美国产一区二区三区| 国产精品免费久久久| 欧美在线激情视频|