久久精品日韩无码|61伊人久久绿帽|最新国产浮力网站|亚州aV无码国产|明星一二三区av|超碰人人在线成人|澳门无码福利av

thoughtworks公司介紹?

時間:2024-09-20 10:21 人氣:0 編輯:招聘街

一、thoughtworks公司介紹?

Thoughtworks是一家創(chuàng)辦于1993年的全球性軟件及咨詢公司,致力于用科技驅動商業(yè)變革,針對全球客戶數(shù)字化業(yè)務提供專業(yè)組織轉型咨詢、創(chuàng)新軟件交付、用戶體驗設計、產(chǎn)品及一體化解決方案等服務。

客戶遍及全球汽車、金融保險、醫(yī)療、旅游、運輸、零售、電商、能源、公共事業(yè)等領域。在澳大利亞、中國、厄瓜多爾、德國、印度、意大利等17個國家設立48個辦公室,擁有超過9000名員工。

二、thoughtworks怎么樣?

thoughtworks是一家創(chuàng)辦于1993年的全球性軟件及咨詢公司,致力于用科技驅動商業(yè)變革,針對全球客戶數(shù)字化業(yè)務提供專業(yè)組織轉型咨詢、創(chuàng)新軟件交付、用戶體驗設計、產(chǎn)品及一體化解決方案等服務。

客戶遍及全球汽車、金融保險、醫(yī)療、旅游、運輸、零售、電商、能源、公共事業(yè)等領域。在澳大利亞、中國、厄瓜多爾、德國、印度、意大利等17個國家設立48個辦公室,擁有超過9000名員工。

三、thoughtworks是外包嗎?

是的,思特沃克本質上是外包公司。雖然思特沃克的自我定位是高級外包,但其本質上就是外包公司。外包的本質就是外包,而思特沃克則是外包公司。在思特沃克的工作中,員工需要接受公司提供的培訓和指導,但如果員工的能力不達標,則需要被拉入各種項目,這些項目可能涉及技術。

四、thoughtworks公司靠譜嗎?

靠譜。

Thoughtworks是一家創(chuàng)辦于1993年的全球性軟件及咨詢公司,致力于用科技驅動商業(yè)變革,針對全球客戶數(shù)字化業(yè)務提供專業(yè)組織轉型咨詢、創(chuàng)新軟件交付、用戶體驗設計、產(chǎn)品及一體化解決方案等服務??蛻舯榧叭蚱?、金融保險、醫(yī)療、旅游、運輸、零售、電商、能源、公共事業(yè)等領域。

在澳大利亞、中國、厄瓜多爾、德國、印度、意大利等17個國家設立48個辦公室,擁有超過9000名員工。2004年進入中國,已在北京、西安、成都、上海、武漢、深圳及香港等地設立七個辦公室,擁有超過2000名員工。Thoughtworks的業(yè)務模式主要通過咨詢幫助改善企業(yè)的IT組織,改進軟件開發(fā)方法,以軟件帶動企業(yè)業(yè)務發(fā)展。Thoughtworks為客戶提供集創(chuàng)意設計、開發(fā)及交付為一體的定制服務。而且隨著企業(yè)知識處理能力發(fā)展需求不斷提升,知識流程外包(KPO)越來越成為被行業(yè)認可的熱點模式,而Thoughtworks對于KPO的核心-戰(zhàn)略性的關鍵IT系統(tǒng)交付同樣經(jīng)驗豐富。

五、thoughtworks成都待遇怎么樣?

工資待遇:¥30000-50000

崗位內(nèi)容:

1.研究并理解軟件工程領域技術趨勢,挖掘并揭示客戶的痛點和訴求

2.對研發(fā)過程有深刻理解,具備一定高度抽象能力,摒棄細節(jié)探求本質

3.熟悉不同類型的研發(fā)體系,例如應用系統(tǒng),移動端開發(fā),數(shù)據(jù)型項目等

4.能夠總結對應的的工程優(yōu)秀實踐,結合工具提供完整的解決方案,幫助客戶進行設計規(guī)劃和落地希望是:

1.對軟件設計和架構有深刻的思考,如果有數(shù)據(jù)挖掘和分析或者統(tǒng)計學背景優(yōu)先。

2.開放且樂于溝通和合作,強調(diào)團隊協(xié)作3.良好的對內(nèi)對外溝通能力以及面對客戶的能力4接受一定比例的出差5英語具備讀寫能力。

六、thoughtworks是外包公司嗎?

是外包公司。

thoutworks是一家專業(yè)的軟件外包公司,提供軟件開發(fā)、測試、維護等服務。

他們有專業(yè)的團隊和豐富的項目經(jīng)驗,通過與客戶合作,為他們提供高質量的解決方案和定制化的軟件開發(fā)服務。

作為外包公司,thoutworks與客戶進行合作,幫助客戶實現(xiàn)各種軟件開發(fā)需求。

他們的專業(yè)團隊可以根據(jù)客戶的要求進行定制開發(fā),同時也能提供軟件測試、項目迭代和維護等服務。

thoutworks的目標是以高效、專業(yè)的方式滿足客戶的需求,幫助他們提高業(yè)務效率

和競爭力。

七、thoughtworks公司是做什么的?

Thoughtworks是?家創(chuàng)辦于1993年的全球性軟件及咨詢公司。追求技術卓越,致?于?科技驅動商業(yè)變?,為世界創(chuàng)造?凡影響。針對全球頂尖客戶數(shù)字化業(yè)務提供專業(yè)組織轉型咨詢、創(chuàng)新軟件交付、?戶體驗設計、產(chǎn)品及?體化解決?案等服務。客戶遍及全球汽?、?融保險、醫(yī)療、旅游、運輸、零售、電商、能源、公共事業(yè)等領域

八、thoughtworks是世界五百強嗎?

thoughtworks是世界五百強企業(yè)。全球軟件設計與定制 企業(yè)ThoughtWorks是與谷歌齊名的IT企業(yè),目前在美國、英國、澳大利亞、加拿大、德國、印度、巴西、南非、中國等十個國家成立分公司,聘用超過2000位行業(yè)精英,員工招聘體系比谷歌更為嚴苛,主要服務英特爾、惠普等 企業(yè)。

九、在Thoughtworks工作能學到哪些技術和經(jīng)驗?

先說明下,這不是廣告,咱也沒廣告費,客觀說點觀察到的優(yōu)勢。

在thoughtworks工作,能學到技術什么的就不多說了,作為一家技術公司,技術是根本,來說說其他亮點,尤其是在大多數(shù)普通公司學不到的。

在大多數(shù)公司,員工比較難找到施展自己才才華的舞臺,在thoughtworks可以。tw鼓勵員工以多種形式樹立個人影響力,項目內(nèi)部帶buddy,積累知識沉淀,團隊內(nèi)部做各種分享活動,對外寫書,組織各種豐富的社區(qū)活動,甚至到各種大會上公開演講,只要你有意愿,發(fā)揚自己,發(fā)光發(fā)熱,公司都會給予各種支持。

大多數(shù)公司,技術人員都是螺絲釘,在thoughtworks不是。很多公司的技術團隊是根據(jù)層級劃分,有部門墻,在tw的各種項目里,不論你是開發(fā),還是設計師,還是ba,都可以從一開始需求分析到產(chǎn)品開發(fā)上線全程參與到各種分析和討論里去,打破層級和部門墻,在客戶現(xiàn)場和客戶團隊的各種領導們一起開會、討論需求是家常便飯。

大多數(shù)公司,人才培養(yǎng)十分薄弱,有的公司只希望員工產(chǎn)出,有的公司只有少數(shù)領導層或者混到高級別才有機會參與一些培訓。在tw全年,全國各地office不知道發(fā)生過多少場培訓,而且培訓內(nèi)容多種多樣,可以說是發(fā)自肺腑的希望幫助每一個員工健康成長。除此之外,tw的一項福利是每年提供幾千元的培訓經(jīng)費,福利大家采購書籍,學習和提升自己。業(yè)界各種大型conference也都會有人參加,并且把內(nèi)容帶回tw內(nèi)部,轉化為知識沉淀和分享。

先寫到這吧,嘻嘻。

十、mahout面試題?

之前看了Mahout官方示例 20news 的調(diào)用實現(xiàn);于是想根據(jù)示例的流程實現(xiàn)其他例子。網(wǎng)上看到了一個關于天氣適不適合打羽毛球的例子。

訓練數(shù)據(jù):

Day Outlook Temperature Humidity Wind PlayTennis

D1 Sunny Hot High Weak No

D2 Sunny Hot High Strong No

D3 Overcast Hot High Weak Yes

D4 Rain Mild High Weak Yes

D5 Rain Cool Normal Weak Yes

D6 Rain Cool Normal Strong No

D7 Overcast Cool Normal Strong Yes

D8 Sunny Mild High Weak No

D9 Sunny Cool Normal Weak Yes

D10 Rain Mild Normal Weak Yes

D11 Sunny Mild Normal Strong Yes

D12 Overcast Mild High Strong Yes

D13 Overcast Hot Normal Weak Yes

D14 Rain Mild High Strong No

檢測數(shù)據(jù):

sunny,hot,high,weak

結果:

Yes=》 0.007039

No=》 0.027418

于是使用Java代碼調(diào)用Mahout的工具類實現(xiàn)分類。

基本思想:

1. 構造分類數(shù)據(jù)。

2. 使用Mahout工具類進行訓練,得到訓練模型。

3。將要檢測數(shù)據(jù)轉換成vector數(shù)據(jù)。

4. 分類器對vector數(shù)據(jù)進行分類。

接下來貼下我的代碼實現(xiàn)=》

1. 構造分類數(shù)據(jù):

在hdfs主要創(chuàng)建一個文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。

數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak

2. 使用Mahout工具類進行訓練,得到訓練模型。

3。將要檢測數(shù)據(jù)轉換成vector數(shù)據(jù)。

4. 分類器對vector數(shù)據(jù)進行分類。

這三步,代碼我就一次全貼出來;主要是兩個類 PlayTennis1 和 BayesCheckData = =》

package myTesting.bayes;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.util.ToolRunner;

import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;

import org.apache.mahout.text.SequenceFilesFromDirectory;

import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;

public class PlayTennis1 {

private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";

/*

* 測試代碼

*/

public static void main(String[] args) {

//將訓練數(shù)據(jù)轉換成 vector數(shù)據(jù)

makeTrainVector();

//產(chǎn)生訓練模型

makeModel(false);

//測試檢測數(shù)據(jù)

BayesCheckData.printResult();

}

public static void makeCheckVector(){

//將測試數(shù)據(jù)轉換成序列化文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"testinput";

String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean參數(shù)是,是否遞歸刪除的意思

fs.delete(out, true);

}

SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

String[] params = new String[]{"-i",input,"-o",output,"-ow"};

ToolRunner.run(sffd, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("文件序列化失??!");

System.exit(1);

}

//將序列化文件轉換成向量文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";

String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean參數(shù)是,是否遞歸刪除的意思

fs.delete(out, true);

}

SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

ToolRunner.run(svfsf, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("序列化文件轉換成向量失??!");

System.out.println(2);

}

}

public static void makeTrainVector(){

//將測試數(shù)據(jù)轉換成序列化文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"input";

String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean參數(shù)是,是否遞歸刪除的意思

fs.delete(out, true);

}

SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();

String[] params = new String[]{"-i",input,"-o",output,"-ow"};

ToolRunner.run(sffd, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("文件序列化失??!");

System.exit(1);

}

//將序列化文件轉換成向量文件

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";

String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";

Path in = new Path(input);

Path out = new Path(output);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean參數(shù)是,是否遞歸刪除的意思

fs.delete(out, true);

}

SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();

String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};

ToolRunner.run(svfsf, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("序列化文件轉換成向量失敗!");

System.out.println(2);

}

}

public static void makeModel(boolean completelyNB){

try {

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";

String model = WORK_DIR+Path.SEPARATOR+"model";

String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";

Path in = new Path(input);

Path out = new Path(model);

Path label = new Path(labelindex);

FileSystem fs = FileSystem.get(conf);

if(fs.exists(in)){

if(fs.exists(out)){

//boolean參數(shù)是,是否遞歸刪除的意思

fs.delete(out, true);

}

if(fs.exists(label)){

//boolean參數(shù)是,是否遞歸刪除的意思

fs.delete(label, true);

}

TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();

String[] params =null;

if(completelyNB){

params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};

}else{

params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};

}

ToolRunner.run(tnbj, params);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("生成訓練模型失??!");

System.exit(3);

}

}

}

package myTesting.bayes;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import org.apache.commons.lang.StringUtils;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.fs.PathFilter;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.LongWritable;

import org.apache.hadoop.io.Text;

import org.apache.mahout.classifier.naivebayes.BayesUtils;

import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;

import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;

import org.apache.mahout.common.Pair;

import org.apache.mahout.common.iterator.sequencefile.PathType;

import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;

import org.apache.mahout.math.RandomAccessSparseVector;

import org.apache.mahout.math.Vector;

import org.apache.mahout.math.Vector.Element;

import org.apache.mahout.vectorizer.TFIDF;

import com.google.common.collect.ConcurrentHashMultiset;

import com.google.common.collect.Multiset;

public class BayesCheckData {

private static StandardNaiveBayesClassifier classifier;

private static Map<String, Integer> dictionary;

private static Map<Integer, Long> documentFrequency;

private static Map<Integer, String> labelIndex;

public void init(Configuration conf){

try {

String modelPath = "/zhoujianfeng/playtennis/model";

String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";

String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";

String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";

dictionary = readDictionnary(conf, new Path(dictionaryPath));

documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));

labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));

NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);

classifier = new StandardNaiveBayesClassifier(model);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("檢測數(shù)據(jù)構造成vectors初始化時報錯。。。。");

System.exit(4);

}

}

/**

* 加載字典文件,Key: TermValue; Value:TermID

* @param conf

* @param dictionnaryDir

* @return

*/

private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {

Map<String, Integer> dictionnary = new HashMap<String, Integer>();

PathFilter filter = new PathFilter() {

@Override

public boolean accept(Path path) {

String name = path.getName();

return name.startsWith("dictionary.file");

}

};

for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {

dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());

}

return dictionnary;

}

/**

* 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq

* @param conf

* @param dictionnaryDir

* @return

*/

private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {

Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();

PathFilter filter = new PathFilter() {

@Override

public boolean accept(Path path) {

return path.getName().startsWith("part-r");

}

};

for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {

documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());

}

return documentFrequency;

}

public static String getCheckResult(){

Configuration conf = new Configuration();

conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));

String classify = "NaN";

BayesCheckData cdv = new BayesCheckData();

cdv.init(conf);

System.out.println("init done...............");

Vector vector = new RandomAccessSparseVector(10000);

TFIDF tfidf = new TFIDF();

//sunny,hot,high,weak

Multiset<String> words = ConcurrentHashMultiset.create();

words.add("sunny",1);

words.add("hot",1);

words.add("high",1);

words.add("weak",1);

int documentCount = documentFrequency.get(-1).intValue(); // key=-1時表示總文檔數(shù)

for (Multiset.Entry<String> entry : words.entrySet()) {

String word = entry.getElement();

int count = entry.getCount();

Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,

if (StringUtils.isEmpty(wordId.toString())){

continue;

}

if (documentFrequency.get(wordId) == null){

continue;

}

Long freq = documentFrequency.get(wordId);

double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);

vector.setQuick(wordId, tfIdfValue);

}

// 利用貝葉斯算法開始分類,并提取得分最好的分類label

Vector resultVector = classifier.classifyFull(vector);

double bestScore = -Double.MAX_VALUE;

int bestCategoryId = -1;

for(Element element: resultVector.all()) {

int categoryId = element.index();

double score = element.get();

System.out.println("categoryId:"+categoryId+" score:"+score);

if (score > bestScore) {

bestScore = score;

bestCategoryId = categoryId;

}

}

classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";

return classify;

}

public static void printResult(){

System.out.println("檢測所屬類別是:"+getCheckResult());

}

}

相關資訊
熱門頻道

Copyright © 2024 招聘街 滇ICP備2024020316號-38