『壹』 牛客網位元組跳動面試題解析
1)
題目給出的初始值是在計算機存儲形式,即補碼形式。a為負數,b為整數。
a-b = a + (-b)——思路是先得到(-b)的補碼形式,然後將a的補碼與(-b)的補碼相加。
a的補碼題目已給出: 0xF000000000000000
-b的原碼:0xFFFFFFFFFFFFFFFF
-b的反碼:0x8000000000000000
-b的補碼:0x8000000000000001
a-b = 0xF000000000000000 + 0x8000000000000001
= 0x7000000000000001
= 2^62 + 2^61 + 2^60 + 1
負數-正數 = 正數?這是因為計算機存儲位元組長度的限制導致的最高位溢出。
2)
Boolean([]) //true
布爾類型里只有這幾參數個返回false,其它都為true
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
布爾類型與其它任何類型進行比較,布爾類型將會轉換為number類型。
Number([])返回0所以第二題為true
Number轉換類型的參數如果為對象返回的就是NaN,
那麼Number({})返回的就是NaN。
通過Object.prototype.toString.call({})來判斷類型,0與NaN相比為false
所以 true true false
3)
塊元素
address - 地址
blockquote - 塊引用
center - 舉中對齊塊
dir - 目錄列表
div - 常用塊級容易,也是css layout的主要標簽
dl - 定義列表
fieldset - form控制組
form - 交互表單
h1 - 大標題
h2 - 副標題
h3 - 3級標題
h4 - 4級標題
h5 - 5級標題
h6 - 6級標題
hr - 水平分隔線
isindex - input prompt
menu - 菜單列表
noframes - frames可選內容6)
一、無繼承性的屬性
1、display:規定元素應該生成的框的類型
2、文本屬性:
vertical-align:垂直文本對齊
text-decoration:規定添加到文本的裝飾
text-shadow:文本陰影效果
white-space:空白符的處理
unicode-bidi:設置文本的方向
3、盒子模型的屬性:width、height、margin 、margin-top、margin-right、margin-bottom、margin-left、border、border-style、border-top-style、border-right-style、border-bottom-style、border-left-style、border-width、border-top-width、border-right-right、border-bottom-width、border-left-width、border-color、border-top-color、border-right-color、border-bottom-color、border-left-color、border-top、border-right、border-bottom、border-left、padding、padding-top、padding-right、padding-bottom、padding-left
4、背景屬性:background、background-color、background-image、background-repeat、background-position、background-attachment
5、定位屬性:float、clear、position、top、right、bottom、left、min-width、min-height、max-width、max-height、overflow、clip、z-index
6、生成內容屬性:content、counter-reset、counter-increment
7、輪廓樣式屬性:outline-style、outline-width、outline-color、outline
8、頁面樣式屬性:size、page-break-before、page-break-after
9、聲,(對於不支持frame的瀏覽器顯示此區塊內容
noscript - )可選腳本內容(對於不支持script的瀏覽器顯示此內容)
ol - 排序表單
p - 段落
pre - 格式化文本
table - 表格
ul - 非排序列表
4)
通過iframe設置document.domain可以實現跨域
5)
ES6
A:類必須使用new調用,否則會報錯。這是它跟普通構造函數的一個主要區別,後者不用new也可以執行。
B:export命令規定的是對外的介面,必須與模塊內部的變數建立一一對應關系。
// 報錯
export 1;
// 報錯
var m = 1;
export m;
上面兩種寫法都會報錯,因為沒有提供對外的介面。第一種寫法直接輸出 1,第二種寫法通過變數m,還是直接輸出 1。1隻是一個值,不是介面。正確的寫法是下面這樣。
// 寫法一
export var m = 1;
// 寫法二
var m = 1;
export {m};
// 寫法三
var n = 1;
export {n as m};
D:A模塊對外暴露了一個對象,引入的時候需要使用解構賦值
上面兩種寫法都會報錯,因為沒有提供對外的介面。第一種寫法直接輸出 1,第二種寫法通過變數m,還是直接輸出 1。1隻是一個值,不是介面。正確的寫法是下面這樣。
import {readFile} from 『A'
6)
一、無繼承性的屬性
1、display:規定元素應該生成的框的類型
2、文本屬性:
vertical-align:垂直文本對齊
text-decoration:規定添加到文本的裝飾
text-shadow:文本陰影效果
white-space:空白符的處理
unicode-bidi:設置文本的方向
3、盒子模型的屬性:width、height、margin 、margin-top、margin-right、margin-bottom、margin-left、border、border-style、border-top-style、border-right-style、border-bottom-style、border-left-style、border-width、border-top-width、border-right-right、border-bottom-width、border-left-width、border-color、border-top-color、border-right-color、border-bottom-color、border-left-color、border-top、border-right、border-bottom、border-left、padding、padding-top、padding-right、padding-bottom、padding-left
4、背景屬性:background、background-color、background-image、background-repeat、background-position、background-attachment
5、定位屬性:float、clear、position、top、right、bottom、left、min-width、min-height、max-width、max-height、overflow、clip、z-index
6、生成內容屬性:content、counter-reset、counter-increment
7、輪廓樣式屬性:outline-style、outline-width、outline-color、outline
8、頁面樣式屬性:size、page-break-before、page-break-after
9、聲音樣式屬性:pause-before、pause-after、pause、cue-before、cue-after、cue、play-ring
二、有繼承性的屬性
1、字體系列屬性
font:組合字體
font-family:規定元素的字體系列
font-weight:設置字體的粗細
font-size:設置字體的尺寸
font-style:定義字體的風格
font-variant:設置小型大寫字母的字體顯示文本,這意味著所有的小寫字母均會被轉換為大寫,但是所有使用小型大寫字體的字母與其餘文本相比,其字體尺寸更小。
font-stretch:對當前的 font-family 進行伸縮變形。所有主流瀏覽器都不支持。
font-size-adjust:為某個元素規定一個 aspect 值,這樣就可以保持首選字體的 x-height。
2、文本系列屬性
text-indent:文本縮進
text-align:文本水平對齊
line-height:行高
word-spacing:增加或減少單詞間的空白(即字間隔)
letter-spacing:增加或減少字元間的空白(字元間距)
text-transform:控制文本大小寫
direction:規定文本的書寫方向
color:文本顏色
3、元素可見性:visibility
4、表格布局屬性:caption-side、border-collapse、border-spacing、empty-cells、table-layout
5、列表布局屬性:list-style-type、list-style-image、list-style-position、list-style
6、生成內容屬性:quotes
7、游標屬性:cursor
8、頁面樣式屬性:page、page-break-inside、windows、orphans
9、聲音樣式屬性:speak、speak-punctuation、speak-numeral、speak-header、speech-rate、volume、voice-family、pitch、pitch-range、stress、richness、、azimuth、elevation
三、所有元素可以繼承的屬性
1、元素可見性:visibility
2、游標屬性:cursor
四、內聯元素可以繼承的屬性
1、字體系列屬性
2、除text-indent、text-align之外的文本系列屬性
五、塊級元素可以繼承的屬性
1、text-indent、text-align
7)
將一個數組調整為最大堆.
根據堆的性質, 只要保證部分有序即可, 即根節點大於左右節點的值. 將數組抽象為一個完全二叉樹, 所以只要從最後一個非葉子節點向前遍歷每一個節點即可. 如果當前節點比左右子樹節點都大, 則已經是一個最大堆, 否則將當前節點與左右節點較大的一個交換, 並且交換過之後依然要遞歸的查看子節點是否滿足堆的性質, 不滿足再往下調整. 如此即可完成數組的堆化.
8)
http請求方法(get、post區別)
1、本質區別:get用於查詢信息(查),post用於插入信息(插);
2、安全性:對於伺服器講,get是安全(不更改信息)、冪等(作用1次和n次效果相同); post不安全、不冪等;
對於客戶端將,get參數直接暴露在URL, 不安全;post參數放消息體中,更安全;
3、傳送長度: get受 URL限制,傳送數據量小; post傳送數據量大,默認不受限制;
4、緩存機制、歷史記錄:get請求會被瀏覽器主動緩存,也會被保留在歷史記錄中,post都不可以;
5、數據類型:get只允許ASCII碼字元類型,post無限制;
9)
屬於javaScript的typeof運算符的可能結果
10)
條件概率
男,周二:1/14
男,非周二:6/14
女,周二:1/14
女,非周二:6/17
兩個孩子至少一個是周二生的男孩:1/14+1/14-1/14*1/14=27/196
兩個孩子都是男孩且至少一個是周二生的:1/14*1/14+1/14*6/14+6/14*1/14=13/196
條件概率:13/27
12)
14)
關於下列CSS選擇器:ID選擇器、類選擇器、偽類選擇器、標簽名稱選擇器,排序正確的是
ID選擇器>Class選擇器=偽類>標簽名稱選擇器
15)
假設兩線程為A、B,設有3種情況:
1.AB不並發:此時相當於兩個方法順序執行。A執行完後a=-1,B使用-1作為a的初值,B執行完後a=-2
2.AB完全並發:此時讀寫沖突,相當於只有一個線程對a的讀寫最終生效。相同於方法只執行了一次。此時a=-1
3.AB部分並發:假設A先進行第一次讀寫,得到a=1;之後A的讀寫被B覆蓋了。B使用用1作為a的初值,B執行完後a=0
『貳』 牛客網華為機試題,c++編譯的,我自測都是對的,但是提交就是不對,我要崩潰了
輸入有多組數據,希望有多個輸出。
你的代碼把多組測試數據放在一個集合中,做了一次輸出。
『叄』 牛客網刷題ACM模式 Objc Swift
之前做演算法題都是輸入輸出都確定了
到牛客網這個ACM 感覺很迷茫
用Swift 搞定了輸入出處 但是 retrun a + b 這種簡單的加法都超時 只能放棄了(Leetcode 做的演算法題 都是用的Swift 之前是Java 支持之後 就一直用Swift了)。如果將來牛客網優化了,還是會用Swift
while 能接收多組數據
這里好多OC語法不能用 用就超時了
想到 OC 是C的超集 可以用C語言
好久沒用C了,這里簡單記錄下C的基本語法,夠做題的
這里記錄下
『肆』 js在牛客網上的多行輸入多行輸出
如下例子主要是在node編譯環境下。
比如加法運算:
輸入:
3
1 2
1 3
1 4
輸出:
3
4
5
使用的是for循環調用console.log()
對每一行的輸入都有對應的輸出的多行輸入多行輸出的問題可以使用如下方法:
輸入:
1 2
1 3
1 4
輸出:
3
4
5
『伍』 牛客網c++ 輸入輸出怎麼處理
1、flush(stdin)刷新標准輸入緩沖區,把輸入緩沖區里的東西丟棄fflush(stdout)刷新標准輸出緩沖區,把輸出緩沖區里的東西列印到標准輸出設備上。2、scanf()函數接收輸入數據時,遇以下情況結束一個數據的輸入:(不是結束該scanf函數,scanf函數僅在每一個數據域均有數據,並按回車後結束)。① 遇空格、「回車」、「跳格」鍵。② 遇寬度結束。③ 遇非法輸入。鍵盤緩沖區就可能有殘余信息問題。scanf()函數應該只是掃描stdin流,這個殘存信息是在stdin中解決就要在scanf()函數之後加個fflush(stdin)。
『陸』 牛客網上的java編程題,自己電腦運行沒問題,但是在牛客網上運行失敗,不知道原因在哪裡
1.簡單性
Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發上。
2.面向對象
Java是一個面向對象的語言。對程序員來說,這意味著要注意應中的數據和操縱數據的方法(method),而不是嚴格地用過程來思考。在一個面向對象的系統中,類(class)是數據和操作數據的方法的集合。數據和方法一起描述對象(object)的狀態和行為。每一對象是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程序是用類來組織的。
Java還包括一個類的擴展集合,分別組成各種程序包(Package),用戶可以在自己的程序中使用。例如,Java提供產生圖形用戶介面部件的類(java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java.io包)和支持網路功能的類(java.net包)。
3.分布性
Java設計成支持在網路上應用,它是分布式語言。Java既支持各種層次的網路連接,又以Socket類支持可靠的流(stream)網路連接,所以用戶可以產生分布式的客戶機和伺服器。
網路變成軟體應用的分布運載工具。Java程序只要編寫一次,就可到處運行。
4.編譯和解釋性
Java編譯程序生成位元組碼(byte-code),而不是通常的機器碼。Java位元組碼提供對體系結構中性的目標文件格式,代碼設計成可有效地傳送程序到多個平台。Java程序可以在任何實現了Java解釋程序和運行系統(run-time system)的系統上運行。
在一個解釋性的環境中,程序開發的標准"鏈接"階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。因此,Java支持快速原型和容易試驗,它將導致快速程序開發。這是一個與傳統的、耗時的"編譯、鏈接和測試"形成鮮明對比的精巧的開發過程。
5.穩健性
Java原來是用作編寫消費類家用電子產品軟體的語言,所以它是被設計成寫高可靠和穩健軟體的。Java消除了某些編程錯誤,使得用它寫可靠軟體相當容易。
Java
Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程序能捕捉調用錯誤,這就導致更可靠的程序。
可靠性方面最重要的增強之一是Java的存儲模型。Java不支持指針,它消除重寫存儲和訛誤數據的可能性。類似地,Java自動的"無用單元收集"預防存儲漏泄和其它有關動態存儲分配和解除分配的有害錯誤。Java解釋程序也執行許多運行時的檢查,諸如驗證所有數組和串訪問是否在界限之內。
異常處理是Java中使得程序更穩健的另一個特徵。異常是某種類似於錯誤的異常條件出現的信號。使用try/catch/finally語句,程序員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復的任務。
『柒』 關於牛客網JS的輸入和利用nodejs實現輸入輸出
牛客網JS實現輸入
讀取輸入的一行數據
讀取輸入固定行的多行輸入數據
讀取任意行輸入
nodejs實現輸入輸出
『捌』 牛客網的python多行輸入到底怎麼算對的
ne1 = sys.stdin.readline().strip()
line2 =
sys.stdin.readline().strip()
if line1 == "" or line2
== ""
#我試著這樣,但是演算法也是沒有效果。這樣輸入應該是可以的。
『玖』 牛客網刷演算法總結
容器:vector map set list
演算法:回溯法(dfs),分支界限法(bfs),貪心演算法,分治法,動態規劃
容器排序API:sort reverse find count
字元串操作API:find rfind find_first_of find_last_of find_first_not_of find_last_not_of
其他:查表法,快排,深度優先搜索dfs,廣度有限搜索bfs
1、getline 最後需要判空,如果是輸入一個,請用cin
2、str.append(8-str.size(),'0') ,後面增加幾個『0』
3、str.substr(0,8) 0開始截取8個,str.substr(8)8開始截取剩餘
4、'a'比'A'大32
5、math.h sqrt 開方
6、int(a+0.5)
7、iimap[key] += value map->first << " " << map->second
8、num=num*10+n%10
9、set不重復數組
10、>> 位移
11、emplace_back()相比push_back()少調用一次拷貝構造函數
12、instr.rfind('\\')
13、帶路徑文件名稱,行號,以空格隔開 可以這樣cin >> instr && cin >> row
14、合唱隊,動態規劃
15、兄弟單詞,一起排一次序,比較相等
16、素數伴侶,男女配對,匈牙利演算法(二部圖,交錯路徑,增廣路徑)
17、加解密用查表法
18、兔子演算法,a+b+c
19、數組也可以用sort排序,如sort(nums,nums+26)
20、nodes.erase(iter)刪除這個位置的數據
21、計算字元串距離用動態規劃
22、插入排序一定要back
23、vector<vector<int>> c1(x,vector<int>(y,0));
24、#include<bits/stdc++.h>
25、str.erase(str.begin()+i1, str.begin()+i2+1); str.insert(str.begin()+i1, 'A'+c.size()-1);
26、潤年( (year%4==0&&year%100!=0)||year%400==0)
27、尼科徹斯定理 數學公式直接可以推出來首項是m*m+1-m,有m項
28、find rfind 可以查找子串,find_first_of find_last_of find_first_not_of find_last_not_of 則不能
29、int index = str1.find(str);