說在前面,面試時最好不要虛報工資。本來字節跳動是很想去的,幾輪面試也通過了,最后沒offer,自己只想到幾個原因:1、虛報工資,比實際高30%;2、有更好的人選,這個可能性不大,我看還在招聘。我是面試Android開發的,3年經驗,下面是面試流程:
1.插件化。啟動activity的hook方式。taskAffity。2.okhttp支持HTTP2?http2的功能有哪些?tcp方面擁塞控制?tsl的握手和具體的非對稱加密算法。非對稱名稱 3.handler的post(Runnable)如何實現的。callback,runnable,msg的執行優先級。4.阻塞是怎么實現的?為什么不會阻塞主線程?5.求二叉樹中兩個節點之間的最大距離。6.206含義,未修改資源是哪個,302含義,301含義 7.多進程通信問題。binder優勢。aidl生成的java類細節。多進程遇到哪些問題?8.動態代理傳入的參數都有哪些?非接口的類能實現動態代理嗎?ASM的原理 9.Application和Activity在Context的繼承樹上有何區別?二者使用上有何不同?10.任意一顆二叉樹,求最大節點距離
1.設計一個日志系統。2.內存泄露的分類。怎么查看內存泄露的問題 3.touch事件源碼問題。4.組件化的問題。module和app之間的區別。moduler通信是如何實現的。5.native奔潰的日志采集,怎么處理?6.注解實現一個提示功能:如果int的值大于了3需要提示。
1.介紹下flutter的啟動流程 2.介紹下flutter與weex的區別 3.組件化介紹一下 4.webview中與js通信的手段有哪些?5.介紹下flutter_boost的原理
1.適配器和裝飾模式各自特點和使用場景 2.視頻編解碼是怎么做的 3.三色球排序
1.詢問了除字節跳動以外,還在看其他工作機會么?分別是什么 2.字節、XXX公司、XXX公司,你的優先級是什么,為什么?3.之前薪資待遇是多少?你期望的薪資是多少?4.平時有什么愛好?5.了解職位需求嗎?6.有沒有想問的?
這是我在某論壇看到的故事,我知道我們很多程序員都有一個大廠夢,但如何針對大廠進行面試準備,如何和 HR 聊天,比如談錢等等,很多程序員就顯得手足無措了。本文就根據自己一些見解談談這些問題。
在介紹如何面試之前,這里先從公司的角度來分析:”到底什么樣的候選者是公司所需要的技術人才?“就我在現在這家公司的一些面試官經驗來說,一個具有如下特征的Android程序員是我們所需要的:
具有本科及以上學歷(名校更好)
具有2年及以上的工作經驗(名企更好)
技術扎實,有技術追求和工作激情
良好的溝通和協作
在上面的四條中,其中第3條是最為重要的,即技術,技術是決定能否通過面試的最重要最直接的原因。一般來說,越是大公司,其對技術的要求就越高,盡管部分崗位并不需要那么好的技術,但是為了對候選者做出區分,其面試過程仍然會面試一些稍微深入的話題,相信大家都有所體會。
除了技術以外,良好的溝通和協作能力也是比較重要的。也許很多人覺得這個比較抽象,心里會想:”你怎么知道我有沒有良好的溝通和協作能力呢“?其實這個問題并不難,面試過程就是一次溝通過程,如果不能和面試官很好地溝通,這就說明候選者的溝通有問題。如何很好地和面試官溝通呢?給如下幾點建議:
禮貌和尊重。
聽懂面試官的問題并直接回答。
謙虛謹慎、態度友好。
下面對學歷和工作經驗做一些說明,學歷并不是一個硬性要求,即使候選者學校不怎么好也是有可能通過面試的,這就要求候選者技術非常扎實。而工作經驗,之所以是2年以上,這是因為社會招聘的對象一般都是有一定工作經驗的,而1年工作經驗略短了點,拿百度來說,社招的最低級別一般為T4,差不多剛好就是2年經驗左右。
這里做下總結,理想的候選者應該是這樣的:
扎實的技術功底,有技術追求(必須)
態度、溝通和為人都很好(必須)
2年左右工作經驗(基本必須)
名校、名企、高學歷(非必須,加分項)
基本來說,滿足1和2就能通過面試,3和4都是次要條件,但是一般來說不滿足3就很難滿足1,不要說特例,木有參考意義。
由此可見,技術是面試結果的決定因素。那么到底技術掌握到什么程度才能比較輕松地通過面試呢?說了那么多,好像和Android沒有一點關系,下面就開始以Android為例來分析下面試過程所需的技術。
下面的所有技術知識點詳細內容都整理在了開源項目添加小助理vx:MAYAZBSP
JAVA并發知識庫
JAVA線程實現/創建方式
4種線程池
線程生命周期(狀態)
終止線程4種方式
sleep與wait 區別
start與run區別
JAVA后臺線程
JAVA鎖
線程基本方法4.1.11. 線程上下文切換
同步鎖與死鎖
線程池原理
JAVA阻塞隊列原理
CyclicBarrier、CountDownLatch、Semaphore的用法
volatile關鍵字的作用(變量可見性、禁止重排序)
如何在兩個線程之間共享數據
服務注冊發現
API 網關
配置中心
事件調度(kafka)
服務跟蹤(starter-sleuth)
服務熔斷(Hystrix)
Hystrix斷路器機制
API管理
緩存雪崩
緩存穿透
緩存預熱
緩存更新
緩存降級
Spring 特點
Spring 核心組件
Spring 常用模塊
Spring 主要包
Spring 常用注解
Spring第三方結合
Spring IOC原理
Spring APO原理
Spring MVC原理
Spring Boot原理
JPA原理
Mybatis緩存
Tomcat架構
線程
JVM內存區域
JVM運行時內存
垃圾回收與算法
JAVA 四中引用類型
GC分代收集算法 VS 分區收集算法
GC垃圾收集器
JAVA IO/NIO
JVM 類加載機制
JAVA異常分類及處理
JAVA反射
JAVA注解
JAVA內部類
JAVA泛型
JAVA序列化(創建可復用的Java對象)
JAVA復制
接口繼承關系和實現
List
ArrayList(數組)
Vector(數組實現、線程同步)
LinkList(鏈表)
Set
HashSet(Hash表)
TreeSet(二叉樹)
Netty 原理
Netty 高性能
Netty RPC實現
關鍵技術
核心流程
消息編解碼
通訊過程
RMI實現方式
Slf4j
Log4j
LogBack
Logback優點
ELK
Zookeeper概念
Zookeeper角色
Zookeeper工作原理(原子廣播)
Znode有四種形式的目錄節點
Kafka概念
Kafka數據存儲設計
partition的數據文件(offset,MessageSize,data)
數據文件分段segment(順序讀寫、分段命令、二分查找)
數據文件索引(分段索引、稀疏存儲)
生產者設計
負載均衡(partition會均衡分布到不同broker上)
批量發送
壓縮(GZIP或Snappy)
消費者設計
Hbase概念
列式存儲
Hbase核心概念
Hbase核心架構
Hbase的寫邏輯
HBase vs Cassandra
MongoDB
MongoDB概念
MongoDB特點
Cassandra概念
數據模型
Cassandra一致Hash和虛擬節點
Gossip協議
數據復制
數據寫請求和協調者
數據讀請求和后臺修復
數據存儲(CommitLog、MemTable、SSTable)
二級索引(對要索引的value摘要,生成RowKey)
數據讀寫
RabbitMQ概念
RabbitMQ架構
Exchange 類型
設計原則
工廠方法模式
抽象工廠模式
單例模式
建造者模式
原型模式
適配器模式
裝飾器模式
代理模式
外觀模式
橋接模式
組合模式
享元模式
策略模式
模板方法模式
觀察者模式
迭代子模式
責任鏈模式
命令模式
備忘錄模式
四層負載均衡 vs 七層負載均衡
負載均衡算法/策略
LVS
Keepalive
Nginx反向代理負載均衡
HAProxy
存儲引擎
索引
數據庫三范式
數據庫是事務
存儲過程(特定功能的SQL 語句集)
觸發器(一段能自動執行的程序)
數據庫并發策略
數據庫鎖
基于Redis分布式鎖
分區分表
兩階段提交協議
三階段提交協議
柔性事務
CAP
二分查找
冒泡排序算法
插入排序算法
快速排序算法
希爾排序算法
歸并排序算法
桶排序算法
基數排序算法
剪枝算法
回溯算法
最短路徑算法
最大子數組算法
最長公共子序算法
最小生成樹算法
棧(stack)
隊列(queue)
鏈表(Link)
散列表(Hash Table)
排序二叉樹
紅黑樹
B-TREE
位圖
Paxos
Zab
Raft
NWR
Gossip
一致性Hash
一致性Hash特性
一致性Hash原理
Spark概念
核心架構
核心組件
SPARK編程模型
SPARK計算模型
SPARK運行流程
SPARK RDD流程
SPARK RDD
Storm概念
集群架構
Nimbus(master-代碼分發給Supervisor)
Supervisor(slave-管理Worker進程的啟動和終止)
Worker(具體處理組件邏輯的進程)
Task
ZooKeeper
編程模型(spout->tuple->bolt)
opology運行
Storm Streaming Grouping
ResourceManager
NodeManager
ApplicationMaster
YARN運行流程
SaaS
PaaS
IaaS
Docker
Openstack
Namespaces
進程(CLONE_NEWPID 實現的進程隔離)
Libnetwork與網絡隔離
資源隔離與CGroups
鏡像與UnionFS
存儲驅動
Hadoop概念
HDFS
Client
NameNode
Secondary NameNode
DataNode
MapReduce
JobTracker
TaskTracker
Task
Reduce Task 執行過程
Hadoop MapReduce 作業的生命周期
作業提交與初始化
任務調度與監控。
任務運行環境準備
任務執行
作業完成
如何獲取免費架構學習資料?
資料獲取方式:
關于程序員,除了做項目來提高自身的技術之外,還有一種提升自己的專業技能就是:多!看!書!
所有的知識點都整理在了開源項目添加小助理vx:bjmsb03
首先你面到 HR 了,說明你基本已經成為備選人之一了。這時候 HR 會和你聊很多問題,這些問題都是為了了解你的一些個人情況的。比如說性格啦、反應能力、情商等等。另外大部分公司的 HR 并沒有一票否決權,面試沒有成功多半是有更好的備選人而不是因為 HR 把你卡掉了。
然后說到談錢的一個問題。首先以最少的工資招到需要的人肯定是 HR 的考核之一,所以壓價是很正常的一個事情。并且上家公司的薪資也是一個很重要的參考,一般來說漲薪幅度在 30% 以上是很牛逼的事情了,通常都在 20% 左右。
你的開價一般就是 offer 的上限了,考慮到壓價的情況,你可以在原本期望薪水上上浮 1K 左右,然后可以根據面試的情況來有選擇性的開價。
面的不錯,本來想要 16K 的,那么就多要個 1-2K 沒啥問題
面的一般,那就報 16 K 吧
面的一般或者不大好,但是又很想進這家公司,可以酌情下降 1-2K,這個主要還是看自己
不怎么想去這家公司,隨意開價
如果你想去一家不錯的公司,但是目前的硬實力又不到,我覺得還是有必要去努力一下的,技術能力的高低能決定你走多遠,平臺的高低,能決定你的高度。
如果你通過努力成功進入到了心儀的公司,一定不要懈怠放松,職場成長和新技術學習一樣,不進則退。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态